ここでパターン マッチングのハンドルを取得しようとしています。C++/Java のバックグラウンドを持っているため、私には非常になじみがありません。
この分岐のポイントはd
、タプルのリスト [(string,object) の形式) の各メンバーをチェックすることです。3 つのケースを定義したいと思います。
1) この関数のカウンターがリストのサイズ (acc と呼ばれる別の関数で定義) よりも大きい場合、何も返しません (一致がないため) 2)key
入力で指定された値がリストのタプルと一致する場合、その値(または、タプルに格納されているものは何でも._2)を返したいです。3) 一致がなく、反復するリストがまだある場合は、インクリメントして続行します。
私のコードは以下の通りです:
def get(key:String):Option[Any] = {
var counter: Int = 0
val flag: Boolean = false
x match {
case (counter > acc) => None
case ((d(counter)._1) == key) => d(counter)._2
case _ => counter += 1
}
ここでの私の問題は、最初のケースは正しくコンパイルされているように見えますが、2 番目のケースではエラーがスローされることです。
:36: エラー: ')' が必要ですが、'.' です 見つかった。 case ((d(カウンター)._1) == キー) => d(カウンター)._2
3番目も:
scala> case _ => カウンター += 1 :1: エラー: 定義の開始が不正です
しかし、それは2番目が正しくないためだと思います。私の最初の考えは、タプルを正しく比較していないということですが、タプルにインデックスを付けるための構文に従っているように見えるので、困惑しています。誰かが私を正しい方向に導くことができますか?