我检查了文档delegate
,我发现有一个提供的委托类型map
:
class MutableUser(val map: MutableMap) { var name: String by map var age: Int by map }
但我无法弄清楚没有版本之间有什么区别delegate
,如下所示:
class MutableUser(val map: MutableMap) { var name: String var age: Int }
代表的常见用法是by map
什么?
谢谢!
不同之处在于,在第一个带委托的示例中,您所要做的就是将map放到构造函数中并完成.
val user = MutableUser(mutableMapOf( "name" to "John Doe", "age" to 25 )) println(user.name) // Prints "John Doe" println(user.age) // Prints 25
但是为了使这与第二个示例一样,您必须自己实现map的属性初始化.
class MutableUser(val map: MutableMap) { var name: String var age: Int init { name = map["name"].toString() age = map["age"].toString().toInt() } }
一个常见的用例是实现JSON解析器.
在地图中存储属性