Kotlin Elvis运算符 ?: (代替null的默认值)

Elvis运算符 ?:

又称 null 合并运算符。

功能:
接受两个运算数,
若第一个运算数不为null,运算结果就是第一个运算数;
若第一个运算数为null,运算结果就是第二个运算数。

ps:有点像简化版的三目运算符

代码

fun converterToHistory(items: List?): String? {
    var jsonArray = JSONArray()
    items?.map {
        var jsonObject = JSONObject()
        jsonObject.put("content", if (it.content().isNullOrEmpty()) "" else it.content())
        jsonObject.put("finish_at", if (it.finished_at().isNullOrEmpty()) "" else it.finished_at())
        jsonObject.put("type", if (it.type().isNullOrEmpty()) "" else it.type())    
        jsonArray.put(jsonObject)
    }
    return jsonArray.toString()
}

使用 Elvis运算符 ?: 之后,代码简化很多!

fun converterToHistory(items: List?): String? {
    var jsonArray = JSONArray()
    items?.map {
        var jsonObject = JSONObject()
        jsonObject.put("content", it.content() ?: "")
        jsonObject.put("finish_at", it.finished_at() ?: "")
        jsonObject.put("type", it.type() ?: "" )
        jsonArray.put(jsonObject)
    }
    return jsonArray.toString()
}

你可能感兴趣的:(Kotlin Elvis运算符 ?: (代替null的默认值))