如何引用when表达式的未命名参数?

时间:2017-07-15 10:14:44

标签: switch-statement kotlin

我有一个表达时,看起来像这样:




 <代码>当(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;

我目前正在使用以下解决方法:

&#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;

1 个答案:

答案 0 :(得分:1)

对于when块,没有指定变量,但是你可以使用let()函数进行类似的行为,这可能比你的解决方法好一些,但表现相同。

foo.toString().let{
    when(it){
        ""       ->'A'
        "HELLO"  ->'B'
        "GOODBYE"->'C'
        else     ->it[0]
    }
}