私は Scala プログラミング言語にまったく慣れていないので、こちらの講義ノートを読んでいるときに心に引っかかっていることを試していました。
コンス演算子がどのように機能するかを本当に理解できなかったと思います。ここに私が試したいくつかのことがあります:
擬似乱数ジェネレーターを作成してから、1 つのランダム値のリストを作成しようとしました。
scala> val gen = new java.util.Random
gen: java.util.Random = java.util.Random@1b27332
scala> gen nextInt 3 :: Nil
<console>:7: error: type mismatch;
found : List[Int]
required: Int
gen nextInt 3 :: Nil
^
しかし、List(3) を nextnt メソッドに渡そうとしました。パラテーゼを使用したときは問題ありませんでした
scala> (gen nextInt 3) :: Nil
res69: List[Int] = List(1)
実行順序が気になったので調べる関数を作ってみた
scala> def pr(i:Int):Int = { println(i); i }
pr: (i: Int)Int
scala> pr(1) :: pr(2) :: pr(3) :: Nil
1
2
3
res71: List[Int] = List(1, 2, 3)
出力に見られるように、実行順序は出現順序と同じです。次に、「nextInt」関数に関するものかもしれないと思ったので、次のことを試しました。
scala> 1 + 2 :: Nil
res72: List[Int] = List(3)
最初に加算を実行し、その後に cons を実行します。ここに質問があります: と の違いは何gen nextInt 3 :: Nil
ですか1 + 2 :: Nil
?