如何使用Kotlin isNullOrEMpty()使其变得更好


fun updatePath(query: String?){
this.query = query

}
fun build(): String {
if (!query.isNullOrEmpty()) {
val encodedQuery = encode(query)   
}

}

encode()只接受非空字符串变量。但在这里它仍然抱怨我正在通过的查询?我希望使用isNullOrEmpty()可以解决这个问题。

您可以使用具有Null安全性的kotlin Scope函数来避免此类警告。

像这样-

fun build(): String {
query?.let {
if (it.isNotEmpty()) {
val encodedQuery = encode(query)
}
}
}

EDIT:感谢@Tenfour04的通知,我们应该在块内使用实例。

fun build(): String {
query?.let { it ->
if (it.isNotEmpty()) {
val encodedQuery = encode(**it**)
}
}
}

我会使用smartcast或可能的takeIf来避免嵌套。

query?.takeIf { it.isNotEmpty() }?.let {
encode(it)
}

如果encode接受任何非空字符串(包括空字符串(,则可以执行以下操作。

fun build(): String {
...
val encodedQuery = query?.let(::encode)
...
}

编译器不可能进行智能广播,因为您的查询是var,因此它可能会更改。您可以执行以下操作:val query = queryif之前

这会隐藏名称查询。您仍然可以通过this.query使用查询属性

最新更新