我在类中有一个扩展函数
class Utils{
private var x : Int = 0;
public fun Utils.multiply() : Int{
return this.x*100;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我可以在另一个扩展中使用扩展乘法
fun Utils.add() : Int{
return this.multiply()+100
}
Run Code Online (Sandbox Code Playgroud)
但不能在Main类中使用
class Main{
val utils = Utils()
val multi = utils.multiply() //error : Unresolved reference
}
Run Code Online (Sandbox Code Playgroud)
cac*_*acs 13
当您在类中声明扩展函数时,它只能在类的作用域内访问。只是没有办法直接引用它(无论如何目前)。
您可以使用范围函数将自己置于该范围内:
val multi = utils.run { multiply() }
Run Code Online (Sandbox Code Playgroud)
但是您只能通过这种方式访问公共函数 - 如果扩展函数在该类中是私有的,则您必须实际在该函数可见的类中运行代码。做classWithPrivateStuff.run { superPrivateFunction() }不会绕过这些限制
| 归档时间: |
|
| 查看次数: |
1385 次 |
| 最近记录: |