我有一个表达时,看起来像这样:
&#XA;&#XA;<代码>当(foo.toString()){&#XA; “” - &gt;'A'&#xA; “你好” - &gt;'B'和#xA; “再见” - &GT; 'C' &#XA; else - &gt; foo.toString()[0] //有问题的方法调用重复&#xA;}&#xA;&#xA;&#xA;
现在,我不知道我想两次调用 foo.toString()
,但我也想让它保持单个表达式。有没有一种方便的方法可以访问我在其else块中传递给when表达式的值,例如 it
或这个@
语法在语言的其他地方找到的?
我目前正在使用以下解决方法:
&#xA;&#xA; with(foo.toString( )){&#XA;当(本){&#XA; “” - &gt;'A'&#xA; “你好” - &gt;'B'和#xA; “再见” - &GT; 'C' &#XA; else - &gt; this [0]&#xA; }&#xA;}&#xA;
&#xA;&#xA; 但是这引入了另一个块,并且不如我想的那么可读。 有更好的解决方案吗?
&#xA;答案 0 :(得分:1)
对于when块,没有指定变量,但是你可以使用let()
函数进行类似的行为,这可能比你的解决方法好一些,但表现相同。
foo.toString().let{
when(it){
"" ->'A'
"HELLO" ->'B'
"GOODBYE"->'C'
else ->it[0]
}
}