首页 > 解决方案 > 使用 if 以防万一

问题描述

我正在尝试学习 Scala 并尝试编写一个使用 case 语句(switch)来确定数字是奇数还是偶数的函数。知道我的语法错误在哪里吗?

val y = List(1, 3, 5, 8, 11, 15)


def oddEven(y: Int) = y match {

    case y if y % 2 ==0 => 2
    case y if y %2 != 0 => 4
    case _ => 0
 }



标签: scala

解决方案


正确的方法是:

def oddEven(y: Int) = y match {
    case x if x % 2 == 0 => 2
    case _ => 4
 }

因为只有偶数奇数两种情况。

我会为 case 变量取其他名称(例如x ,而不是y)。

List(1, 3, 5, 8, 11, 15).map(oddEven) // > List(4, 4, 4, 2, 4, 4)

如果只有 2 个案例if-else可能更具可读性:

def oddEven(y: Int) =
  if(y % 2 == 0) 2 else 4

推荐阅读