80,469
社区成员




val numbers = listOf('1', '2', '3', '4')
println(numbers.getOrElse(6, {'c'}))
inline fun <T> List<T>.getOrElse(
index: Int,
defaultValue:(Int) -> T //这个 (Int) -> T 看不明白
): T
return 'c'
只是省略了retur而已,我给你写的
inline fun <T> List<T>.getOrElse(
index: Int,
defaultValue:(Int) -> T //这个 (Int) -> T 看不明白
):T{
return defaultValue(index)
}
defaultValue(index) 是在调用传过来的方法,传入的index才是参数,index是int型啊,按上面传过来的方法,defaultValue(index) 会得到'c',getOrElse方法此次返回的也是'c'[/quote]
终于明白了,非常感谢!val numbers = listOf('1', '2', '3', '4')
println(numbers.getOrElse(6) {
when (it) {
1 -> 'a'
2 -> 'c'
else -> 'z'
}
})
inline fun <T> List<T>.getOrElse(
index: Int,
defaultValue: (Int) -> T
): T {
if (index in 0 until size) {
return this[index]
}
return defaultValue(index)
}
给你写个稍微复杂一点的,getOrElse接收一个int和一个方法(这个方法接收一个int返回类型是泛型),如果传入的int在集合范围内,就返回对应字符,否则调用传入的方法,返回其结果。
然后我调用getOrElse方法传入一个6,和一个方法,这个方法判断传入的参数,如果是1返回'a',是'2'返回'c',否则返回'z',此次我调用getOrElse传的是6,而numbers 的size是4,所以它会调用我传入的方法,最终结果应该是'z'return 'c'
只是省略了retur而已,我给你写的
inline fun <T> List<T>.getOrElse(
index: Int,
defaultValue:(Int) -> T //这个 (Int) -> T 看不明白
):T{
return defaultValue(index)
}
defaultValue(index) 是在调用传过来的方法,传入的index才是参数,index是int型啊,按上面传过来的方法,defaultValue(index) 会得到'c',getOrElse方法此次返回的也是'c'inline fun <T> List<T>.getOrElse(
index: Int,
defaultValue:(Int) -> T //这个 (Int) -> T 看不明白
):T{
return defaultValue(index)
}
defaultValue(index),这个index才是传入的int