小编jay*_*007的帖子

Scala将这个改成列表的方式?

假设我有一个例程,它将枚举值作为参数并返回一个布尔值......我想检查一组枚举值,看它们是否都是真的.是否有惯用的方法来做到这一点.这是我的"老派"尝试,似乎是非scala-ish:

def allUnitQueuesEmpty(): Boolean =
    ( getQueue(QID.CPU).isEmpty() &&
      getQueue(QID.L1C_I).isEmpty() &&
      getQueue(QID.L1D_I).isEmpty() &&
      getQueue(QID.L1VC_I).isEmpty() &&
      getQueue(QID.L1C_D).isEmpty() &&
      getQueue(QID.L1D_D).isEmpty() &&
      getQueue(QID.L1VC_D).isEmpty() &&
      getQueue(QID.L1WB_D).isEmpty() &&
      getQueue(QID.L2C).isEmpty() &&
      getQueue(QID.L2WB).isEmpty() &&
      getQueue(QID.MEM_RD).isEmpty() &&
      getQueue(QID.MEM_WRT).isEmpty() );
Run Code Online (Sandbox Code Playgroud)

可以用List完成吗?

-Jay

scala

5
推荐指数
2
解决办法
350
查看次数

如何减少以下布尔函数定义中的冗余?

我只是在寻找更好的Scala做事方式,所以问新手问题.例如:

我希望能够做以下事情:

给定a,b,c为"boolean":

if (((a nand b) nand c) != (a nand (b nand c))) printf("NAND is not associative")
Run Code Online (Sandbox Code Playgroud)

我将在哪里循环可能的a,b,c布尔值.我是这样做的:

for (i <- 0 to 7) {
  val (a,b,c) = (new MyBoolean((i & 4) >> 2 == 1),
                 new MyBoolean((i & 2) >> 1 == 1),
                 new MyBoolean((i & 1) == 1))
  printf("%d (%s,%s,%s)\n",i,a,b,c)
  if (((a nand b) nand c) != (a nand (b nand c))) printf("NAND\n")
}
Run Code Online (Sandbox Code Playgroud)

我想我可以简化一下:

val (a,b,c) = (new MyBoolean(i & 4 != 0),
               new MyBoolean(i …
Run Code Online (Sandbox Code Playgroud)

scala

2
推荐指数
1
解决办法
824
查看次数

标签 统计

scala ×2