почему я не могу использовать "println(result.name)
" и "println(result.age)
" ???
Поскольку вы объявили тип возврата fun personInfo
равным Any
. Выражение object
не имеет именованного типа, поэтому вы не можете ссылаться на него, если не ссылаетесь непосредственно на результат выражения, что вы можете сделать, только если это переменная верхнего уровня.
Kotlin не имеет структурных типов, вместо этого вы должны объявить именованный интерфейс со следующими свойствами:
interface PersonInfo {
val name: String
val age: Int
}
fun personInfo(_name: String, _age: Int) = object : PersonInfo {
override val name = _name
override val age = _age
}
Однако я бы посчитал это очень неловкой идиомой в Kotlin, класс данных был бы очень более естественный:
data class PersonInfo(
val name: String,
val age: Int
)
fun personInfo(_name: String, _age: Int) = PersonInfo(_name, _age)
Вы также можете бросить fun personInfo
и использовать конструктор напрямую.