kotlin在课堂授权中调用一个变异函数

我是Kotlin新手,我不知道如何解释,但这个例子应该足够了

interface Walker{ var position:Pair<Int,Int> fun walk(to:Pair<Int,Int>){ position = to; } fun trip() } class People(override var position: Pair<Int, Int>):Walker{ override fun trip() { Log.v("TP","Ouch!!") } } class Superman(override var position: Pair<Int, Int>): Walker by People(position){ } 

当我打电话

 val sm = Superman(Pair(0,0)) sm.walk(Pair(2,2)) Log.v("TP","${sm.position}" //It give (0,0) instead of (2,2) 

有没有一种可能的方式来解决这个问题,同时仍然使用委托

One Solution collect form web for “kotlin在课堂授权中调用一个变异函数”

更改

 class Superman(override var position: Pair<Int, Int>): Walker by People(position) 

 class Superman(position: Pair<Int, Int>): Walker by People(position) 

这样,您只需将position的初始值传递给委托,而不是再次覆盖position ,即可取代最初委派给Person

  • 如何修改Kotlin的地图?
  • 在VertX中匹配响应处理程序与请求
  • 未解决的参考使用Android的Kotlin
  • Kotlin higherorder函数(可调用引用)编译器崩溃
  • Kotliquery不关闭postgresql连接
  • Kotlin - 杰克逊忽略空值
  • 匕首2 - 多模块应用程序错误
  • 如何在Kotlin html框架中表示Web组件标签?
  • Kotlin类NoClassDefFoundError崩溃
  • 创建对象实现接口时出错:该类没有构造函数
  • Kotlin合并了两个可空的可变列表
  • Kotlin language will be the best programming language for Android.