des*_*ori 5 android constructor kotlin
以下作品
class PagerAdapter(var tabCount: Int, fm: FragmentManager?) : FragmentStatePagerAdapter(fm) {
override fun getItem(p0: Int): Fragment {
return when (p0) {
0 -> TabFragment1()
1 -> TabFragment2()
2 -> TabFragment3()
else -> throw IllegalArgumentException("Invalid color param value")
}
}
override fun getCount() = tabCount
}
Run Code Online (Sandbox Code Playgroud)
这不是(未解析的参考:tabCount)
class PagerAdapter(tabCount: Int, fm: FragmentManager?) : FragmentStatePagerAdapter(fm) {
override fun getItem(p0: Int): Fragment {
return when (p0) {
0 -> TabFragment1()
1 -> TabFragment2()
2 -> TabFragment3()
else -> throw IllegalArgumentException("Invalid color param value")
}
}
override fun getCount() = tabCount
}
Run Code Online (Sandbox Code Playgroud)
我是 Kotlin 的新手,只是很困惑为什么不能在类本身中使用 val 属性。有人可以解释一下吗?谢谢
第二个不起作用,因为您没有声明该类的任何属性。仅在括号中提及它们并不会使它们成为属性,而是可以像它们只是构造函数的参数一样进行比较。
您要么想使用,var要么……如果您愿意,val您可以制作它们。private
另请检查Kotlins 关于类和继承的参考,更具体地说是构造函数章节:
事实上,对于声明属性并从主构造函数初始化它们,Kotlin 具有简洁的语法:
Run Code Online (Sandbox Code Playgroud)class Person(val firstName: String, val lastName: String, var age: Int) { ... }与常规属性非常相似,在主构造函数中声明的属性可以是可变的
var或只读的val。
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |