如何引用when表达式的未命名的参数?
我有一个表达式如下所示:
when(foo.toString()){ "" ->'A' "HELLO" ->'B' "GOODBYE"->'C' else ->foo.toString()[0]//problematic method call duplication }
现在,我不想调用foo.toString()
两次,但我也希望这是一个单一的表达式。 有没有一种方便的方式来访问我传递给else表达式的值,比如在语言的其他地方找到的it
或this@
语法?
我目前正在使用以下解决方法:
with(foo.toString()){ when(this){ "" ->'A' "HELLO" ->'B' "GOODBYE"->'C' else ->this[0] } }
但是这引入了另一个块,并且比我想要的更不可读。 有更好的解决方案吗?
对于when块,没有指定变量,但是可以使用let()
函数来进行类似的行为,这可能比您的解决方法稍好一些,但行为相同。
foo.toString().let{ when(it){ "" ->'A' "HELLO" ->'B' "GOODBYE"->'C' else ->it[0] } }