kotlin-run与elvis运营商-有什么区别?

kotlin-run与elvis运营商-有什么区别?,kotlin,Kotlin,我试图理解kotlin中以下两段代码之间的区别: myVar?.let { print(it) } ?: run { print("its null folks") } vs 它们相等吗?是这样运行的,这样我们就可以使用一块代码,而另一块只用于一条语句?是的,它们是等效的运行允许您在elvis运算符的右侧使用多个语句;在本例中只有一个,因此不需要run。这可能是一个明显的考虑因素,但是run返回您提供的代码块的结果,因此它必须返回与elvis运算符左侧相同的类型,然后提供一个块来编写代码,即?

我试图理解kotlin中以下两段代码之间的区别:

myVar?.let { print(it) } ?: run { print("its null folks") }
vs


它们相等吗?是这样运行的,这样我们就可以使用一块代码,而另一块只用于一条语句?

是的,它们是等效的<代码>运行允许您在elvis运算符的右侧使用多个语句;在本例中只有一个,因此不需要
run

这可能是一个明显的考虑因素,但是
run
返回您提供的代码块的结果,因此它必须返回与elvis运算符左侧相同的类型,然后提供一个块来编写代码,即?:run{}和?:对我来说是一样的权利是的,我看不出有什么不同。此外,即使不运行
run
,您也可以通过简单地创建和执行lambda(例如,
x:{doSomething();doSomethingElse()}()
)来执行相同的操作,这或多或少是
run
所做的
myVar?.let { print(it) } ?:  print("its null folks")