Android 如何编写自己的扩展函数
我有这样一个默认函数:Android 如何编写自己的扩展函数,android,kotlin,extension-function,Android,Kotlin,Extension Function,我有这样一个默认函数: fun <T> makeDefault(): Animal<T> = Animal<Nothing>( name = "", size = 0, age = 0 ) 问题:如何为我的makeDefault()创建这样的函数 我想做的是: val animal: Animal<Dog> by makeDefault() val-animal:animal-by-makeDefault() 您可以创建
fun <T> makeDefault(): Animal<T> = Animal<Nothing>(
name = "",
size = 0,
age = 0
)
问题:如何为我的makeDefault()
创建这样的函数
我想做的是:
val animal: Animal<Dog> by makeDefault()
val-animal:animal-by-makeDefault()
您可以创建自己的代理,而不是扩展名:
导入kotlin.reflect.KProperty
类DefaultDelegate{
创建的私有变量:Animal=Animal(
name=“”,
大小=0,
年龄=0
)
运算符fun getValue(thisRef:Any?,属性:KProperty):动物{
创建的返回
}
运算符fun setValue(thisRef:Any?,属性:KProperty,值:Animal){
创造=价值
}
}
然后使用它:
val animal: Animal<Dog> by DefaultDelegate()
val animal:animal by DefaultDelegate()
有关更多信息,请参见您可以创建自己的代理,而不是扩展名:
导入kotlin.reflect.KProperty
类DefaultDelegate{
创建的私有变量:Animal=Animal(
name=“”,
大小=0,
年龄=0
)
运算符fun getValue(thisRef:Any?,属性:KProperty):动物{
创建的返回
}
运算符fun setValue(thisRef:Any?,属性:KProperty,值:Animal){
创造=价值
}
}
然后使用它:
val animal: Animal<Dog> by DefaultDelegate()
val animal:animal by DefaultDelegate()
有关更多信息,请参见应该注意的是,由于所有这些操作都是返回一个常量实例,因此代理只是引入了额外的开销,没有任何好处。感谢您的回答,并感谢@Tenfour04提供的有用评论。应该注意的是,由于所有这些操作都是返回一个常量实例,一位代表只是为了没有好处而引入额外的开销。感谢您的回答,并感谢@Tenfour04提供的有用评论
val animal: Animal<Dog> by DefaultDelegate()