ニコ:
これは私のコードです。
class Repository(context: Context) {
// Can access 'context' from here
val mSharedPrefsProperties = context
.getSharedPreferences(context.packageName.plus(".properties"), Context.MODE_PRIVATE)
// Can't access 'context' in this function (unresolved reference: context)
private fun getApiKey(): String {
val apiKeys = context.resources.getStringArray(R.array.api_keys)
val random = Random().nextInt(apiKeys.size)
return apiKeys[random]
}
}
関数内のコンストラクタからプロパティにアクセスする方法はありますか私はそれらのインスタンス/ローカル変数にする必要がありますか?
s1m0nw1:
シンプルなコンストラクタのパラメータは、あなたのクラスのプロパティにはなりません。それだけでexplitlyそれらを作ることによって起こりますvar
かval
。あなたは、それにもかかわらず、例えば、初期化に関連するもので、これらの簡単なのparamsにアクセスすることができます。
class ConstWithArg(param1: String) {
init {
println(param1)
}
val field1 = param1.length
var field2 = param1.length
}
あなたは建設後のパラメータにアクセスする必要がある場合、それは作ることによって財産になるはずですval
。あなたは誰があなたのクラスの外に、このフィールドにアクセスしたくない場合は、プライベートとしてマーク:
class ConstWithArg(private val param1: String) {
fun useProp(){
println(param1)
}
}