如果在scala中表达式,是否有更简洁的表达方式

时间:2014-05-17 13:23:16

标签: scala

'我正在探索scala。 是否有更简洁和/或更惯用的方式来编写以下代码?

def getValToAdd(c: Char): Int = {
  if ('(' == c) {
    1
  } else if (')' == c) {
    -1
  } else {
    0
  }
}

2 个答案:

答案 0 :(得分:4)

你可以删除所有花括号,它们是多余的:

def getValToAdd(c: Char): Int =
  if ('(' == c) 1
  else if (')' == c) -1
  else 0

但更惯用的方法是使用Pattern Matching

def getValToAdd(c: Char): Int = c match {
  case '(' => 1
  case ')' => -1
  case _ => 0  
}

您也可以删除返回类型,编译器可以解决它:

def getValToAdd(c: Char) = c match {
  case '(' => 1
  case ')' => -1
  case _ => 0  
}

但除非这是一种私有效用方法,否则我不建议这样做。

答案 1 :(得分:0)

def getValToAdd(c: Char): Int = c match {
    case '(' => 1
    case ')' => -1
    case _ => 0
}