【问题标题】:match with string numbers - unreachable code与字符串数字匹配 - 无法访问的代码
【发布时间】:2012-06-25 10:16:34
【问题描述】:

Scala 新手,似乎无法让我的匹配表达式工作。我已经了解了语句评估方式之间的差异(例如,一个新变量与一个声明的变量相反),但似乎无法让反引号或大写起作用。

// declared inside of object
val numberOne = "+17201234567"
val numberTwo = "+17201235678"

def returnSomething(number: String): String = number match {
  case numberOne => "my first number"
  case numberTwo => "my second number"
  case _ => "a default number"
}

...

returnSomething("+17201235678") // should return "my second number"

请帮助澄清为什么这不起作用,因为我在 match 语句的第二行收到“无法访问代码”错误。我知道这个问题已经结束了,但由于某种原因,我见过的例子都没有为我工作。典型的菜鸟语言的东西。谢谢!

【问题讨论】:

  • 一个可能的重复 - 见这里:stackoverflow.com/questions/6564220/…
  • 不完全。该问题引用了一个匹配语句,该语句使用左侧的另一个函数 + 传递给它的反引号 var。我尝试回签 numberOne/numberTwo 变量,但无济于事。
  • @axel22 可能的重复请参见此处:stackoverflow.com/q/10863067/406435。但要找到这个问题几乎是不可能的。

标签: scala pattern-matching


【解决方案1】:

其中任何一个都可以:

// declared inside of object
val numberOne = "+17201234567"
val numberTwo = "+17201235678"

def returnSomething(number: String): String = number match {
  case `numberOne` => "my first number"
  case `numberTwo` => "my second number"
  case _ => "a default number"
}


// declared inside of object
val NumberOne = "+17201234567"
val NumberTwo = "+17201235678"

def returnSomething(number: String): String = number match {
  case NumberOne => "my first number"
  case NumberTwo => "my second number"
  case _ => "a default number"
}

但你说你试过了,但没用。那么,到底出了什么问题呢?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2022-10-24
    • 1970-01-01
    相关资源
    最近更新 更多