遭遇
class Person(name: String) {
fun program() = println("$name program")
}
Unresolved reference: name
というエラーが出た
property
constructorの中でvar
かval
で定義しないとclassのpropertyにならないのは原因です!なるほど!
class Person(val name: String) {
fun program() = println("$name program")
}
fun main() {
val person = Person("Arthur")
person.program()
}
確認
package com.example.webviewtest.learn
import kotlin.reflect.full.memberProperties
class Person(name: String) {
// fun program() = println("Person: $name program")
}
class Person2(val name: String) {
fun program() = println("Person2: $name program")
}
fun main() {
val person = Person("Arthur")
val person2 = Person2("Arthur")
println(person::class.memberProperties)
println(person2::class.memberProperties)
}
結果↓確かにPersonはpropertyが持ってないことになってます
[]
[val com.example.webviewtest.learn.Person2.name: kotlin.String]
valとvarを使わない場合は
クラスの中でpropertyを定義しないといけない
class Person2(name: String) {
var name: String = name
fun work() = println("$name program")
}