小编Sub*_*rya的帖子

scala中的模式匹配在def内部工作,否则不起作用

在下面的第一个代码片段中,case语句在函数内定义,它按预期工作.

代码段1

def echoWhatYouGaveMe(x: Any): String = x match {

    case (a, b) => s"got $a and $b"
    case (a, b, c) => s"got $a, $b, and $c"
    case _ => "Unknown"
}

object MatchTest extends App {

    // trigger the tuple patterns
    println(echoWhatYouGaveMe((1,2)))         // two element tuple
    println(echoWhatYouGaveMe((1,2,3)))       // three element tuple

}

MatchTest.main(Array("dummy"))
Run Code Online (Sandbox Code Playgroud)

产量

有1和2

得到1分,2分和3分

下面的情况不在函数内,但在上面非常类似.它给出了一个错误.我理解错误,但我不明白为什么我在下面收到错误而不是上面的错误.

代码片段2

val myTuple = (1, 2, 3)

val toPrint = myTuple match {
  case (a, b, c) => s"got $a, $b, …
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching

0
推荐指数
1
解决办法
94
查看次数

标签 统计

pattern-matching ×1

scala ×1