Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 具有可空变量的布尔表达式_Kotlin - Fatal编程技术网

Kotlin 具有可空变量的布尔表达式

Kotlin 具有可空变量的布尔表达式,kotlin,Kotlin,我正在对Kotlin进行修补,并试图了解可空变量在Kotlin中的工作方式。这里我有一段代码,它执行布尔检查,以查看车辆是否超载。实现是处理可空变量的好方法还是有更优雅的方法 class路线(变量车辆:车辆?,变量作业:列表?){ 构造函数() 建造商(车辆:车辆?) fun isOverCapacity():布尔值{ val车辆容量=车辆?容量 if(车辆容量!=null){ val totalDemand=jobs?.sumBy{job->job.demand} 如果(总需求!=null){

我正在对Kotlin进行修补,并试图了解可空变量在Kotlin中的工作方式。这里我有一段代码,它执行布尔检查,以查看车辆是否超载。实现是处理可空变量的好方法还是有更优雅的方法

class路线(变量车辆:车辆?,变量作业:列表?){
构造函数()
建造商(车辆:车辆?)
fun isOverCapacity():布尔值{
val车辆容量=车辆?容量
if(车辆容量!=null){
val totalDemand=jobs?.sumBy{job->job.demand}
如果(总需求!=null){
返回总需求>车辆容量
} 
}
返回错误
}
}

非常感谢

通过使用kotlin std lib dsl函数运算符,如、

使用
?。
->如果对象/值不为null,则只调用下一个函数

  • let->返回lambda表达式的结果
  • 运行->返回lambda表达式作为接收方传递的结果
  • 另外->执行操作并返回本身,与lambda的结果不同
  • 应用->执行操作并返回本身,这与lambda将其作为接收器传递的结果不同
  • 使用->返回lambda表达式的结果并关闭可关闭的资源
您可以将代码简化如下:

fun isOverCapacity():布尔值=
车辆?容量?让{车辆容量->
作业?.sumBy{job->job.demand}?.let{totalDemand->
总需求>车辆容量
}
}?:错

fun isOverCapacity(): Boolean {
    val vehicleCapacity = vehicle?.capacity ?: return false
    val totalDemand = jobs?.sumBy { job -> job.demand } ?: return false
    return totalDemand > vehicleCapacity
}