2017-12-16 13 views
0

与えられた文字列と指定された他の文字列を比較したい。(パターン)Scalaの文字列との照合

val s = "match" 

val s1 = "not match" 
val s2 = "not really a match" 
val s3 = "match" 

s match { 
    case s1 => println("Incorrect match 1") 
    case s2 => println("Incorrect match 2") 
    case s3 => println("Match") 
    case _ => println("Another incorrect match") 
} 

、驚くほど私には、の結果:

Incorrect match 1 

そして、私のコンパイラの警告代わりに、私は道をマッチングより簡潔なパターンのために行って、直感的に書いたif Sのシリーズを使用してのcase s2 =>...を超えると私のコードに到達できません。なぜ私のアプローチは機能しませんか?そして、文字列に対して私はどのように "一致"することができますか?

+0

S3はあなたが必要ですかパターンマッチング? – Martijn

+0

はい、私の問題を解決するために、この例は単純化されています。 – parazs

答えて

2

Scalaのパターンマッチとこの小文字変数、新しい一時変数だと思ったことでしょう。あなたのコードはIncorrect match 1を出力します。あなたは同様に、その値に一致するように、あなたの変数をエンコードするためにidentifierを使用することができます。

s match { 
    case `s1` => println("Incorrect match 1") 
    case `s2` => println("Incorrect match 2") 
    case `s3` => println("Match") 

またはあなたがしたいと、大文字にあなたの変数名を更新することができます:S1S2