web-dev-qa-db-ja.com

複数の引数を一致させるにはどうすればよいですか?

私には機能があります:

def func(a: int, b: int, c: double): int

そして、私はさまざまな可能なシナリオに一致させたい

  1. cが0の場合は常にb-aを返します
  2. どこでもc> 9、0を返す
  3. a=bが0を返す場所

など、上記のいずれも満たされない場合は、より複雑なロジックを実行する前に。

最初にcを個別に照合する必要がありますか、それとも_,_,0のようにa、b、cで照合できますか?

35
Phil H

次のように、説明されているすべてのケースをパターンマッチングできます。

def func(a: Int, b: Int, c: Double) = (a, b, c) match {
    case (a, b, 0) => b - a
    case (a, b, c) if c > 9 || a == b => 0
    case _ => 1 // add your logic here
}
67
tenshi

私のコメントからイージーエンジェルの答えに続いて、私はまだこれを感じています

if (c == 0)
   b -a
else if (c > 9)
   0
else if (a == b)
   0
else 
   1 // your logic here

より明確です。基本的に、ここで照合するパターンは実際にはないからです。

2