nll*_*dfx 1 overloading variadic-functions kotlin
我有两个函数检查String/Strings是否为空.
fun isBlank(s: String?) : Boolean {
return s.isNullOrBlank()
}
fun isBlank(vararg strings: String) : Boolean {
return strings.isEmpty() ||
strings.any { isBlank(it) }
}
Run Code Online (Sandbox Code Playgroud)
所以我尝试从第二个函数调用第一个函数,但似乎它试图调用自己.例如,它在java中很好用:
public static boolean isBlank(final String string) {
return string == null || string.trim().isEmpty();
}
public static boolean isBlank(final String... strings) {
return strings.length == 0
|| Arrays.stream(strings).anyMatch(StringUtil::isBlank);
}
Run Code Online (Sandbox Code Playgroud)
如何在kotlin处理这种情况?
您可以使用函数引用执行与Java相同的操作,如下所示:
fun isBlank(vararg strings: String) : Boolean {
return strings.isEmpty() || strings.any(::isBlank)
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为any需要一个类型的参数(T) -> Boolean,T在这种情况下是String.只有非vararg函数有这种类型,vararg实际上函数的类型(Array<out String>) -> Boolean.
| 归档时间: |
|
| 查看次数: |
394 次 |
| 最近记录: |