加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala:简洁的方式来表达以下构造

发布时间:2020-12-16 18:27:15 所属栏目:安全 来源:网络整理
导读:我将给出一些C风格的“括号”伪代码来显示我想以另一种方式表达的内容: for (int i = 0; i n; i++) { if (i == 3 || i == 5 || i == 982) { assertTrue( isCromulent(i) ); } else { assertFalse( isCromulent(i) ); }} for循环不是很重要,这不是我的问题:
我将给出一些C风格的“括号”伪代码来显示我想以另一种方式表达的内容:

for (int i = 0; i < n; i++) {
    if (i == 3 || i == 5 || i == 982) {
        assertTrue( isCromulent(i) );      
    } else {
        assertFalse( isCromulent(i) );
    }
}

for循环不是很重要,这不是我的问题:我想知道如何使用Scala重写循环内部的内容.

我的目标不是让最短的代码成为可能:这是因为我想了解在Scala中可以对方法名称(?)进行何种操作.

你可以在Scala中执行类似下面的操作(以下仍然是某种伪代码,而不是Scala代码):

assert((i==3 || i==5 || i==982)?True:False)(isCromulent(i))

甚至是这样的:

assertTrue( ((i==3 || i==5 || i==982) ?  : ! ) isCromulent(i) )

基本上我想知道测试的结果(i == 3 || i == 5 || i == 982)是否可用于在两个方法之间分派或在表达式之前添加“not”.

我不知道它是否有意义所以请善待(看看我的个人资料):)

解决方法

虽然在这种情况下,pelotom的解决方案要好得多,但您也可以这样做(这比您最初提出的要求更接近):

(if (i==3||i==5||i==982) assertTrue else assertFalse)(isCromulent(i))

动态构造名称可以通过反射来完成,但这肯定不简洁.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读