Generics 如何在Kotlin中编写泛型扩展方法?
在我正在从事的一个项目中,我发现自己为某些类型编写了一些扩展方法,以便在可选值为null时返回默认值 例如,我可能有一个Generics 如何在Kotlin中编写泛型扩展方法?,generics,extension-methods,kotlin,Generics,Extension Methods,Kotlin,在我正在从事的一个项目中,我发现自己为某些类型编写了一些扩展方法,以便在可选值为null时返回默认值 例如,我可能有一个Boolean?对象,我想在默认为false的条件表达式中使用它,因此我会写: if (myOptional?.default(false)) { .. } 我已经为几种类型写了这篇文章: fun Boolean?.default(default: Boolean): Boolean { return this ?: default } fun Long?.defa
Boolean?
对象,我想在默认为false的条件表达式中使用它,因此我会写:
if (myOptional?.default(false)) { .. }
我已经为几种类型写了这篇文章:
fun Boolean?.default(default: Boolean): Boolean {
return this ?: default
}
fun Long?.default(default: Long): Long {
return this ?: default
}
fun Int?.default(default: Int): Int {
return this ?: default
}
我想知道是否有一种通用的方法可以做到这一点,这样我就可以编写一个扩展方法,可以用于所有类型?我不会这样做,而是使用标准的
?:
操作符,这是每个Kotlin开发人员都应该知道的,而且更简洁
但要回答你的问题:
fun main(args: Array<String>) {
val k1: Long? = null
val k2: Long? = 4L
println(k1.default(0L)) // prints 0
println(k2.default(0L)) // prints 4
}
fun <T> T?.default(default: T): T {
return this ?: default
}
fun main(args:Array){
val k1:长?=null
val k2:长?=4L
println(k1.default(0L))//打印0
println(k2.default(0L))//打印4
}
乐趣T?默认值(默认值:T):T{
是否返回此项?:默认值
}
您可以创建一个方法来实现这一点,下面就是,尽管我不明白为什么您需要一个方法来实现这一点?您基本上可以直接使用?:
。它更具可读性和紧凑性
扩展功能:
fun <T> T?.default(default: T): T {
return this ?: default
}
funt T?.default(默认值:T):T{
是否返回此项?:默认值
}
这有什么意义?为什么不直接使用?:
?它既标准又简洁。。。。。我想我没有真正的理由,哈哈。这只是我开始走的个人偏好路线。请注意?。
中的如果是超群的话,沃丹。谢谢谢谢我同意,这可能不是正确的选择,但谢谢你回答这个问题。我真的迷恋于创建一个通用的扩展方法,但这有助于实现这一点,所以我把问题留给大家。将来可能有人会有更有用的需求哈哈