Listとかいろいろさわった記録。
List
リストの宣言とheadとtail
scala> var l = List(1, 2, 3) l: List[Int] = List(1, 2, 3) scala> l.head res0: Int = 1 scala> l.tail res1: List[Int] = List(2, 3)
headとtailはSchemeのcarとcdrに相当するっぽいな。
ついでにいうと、consも使える。
car :: cdrみたいに書く。
scala> var l = List(1, 2, 3) l: List[Int] = List(1, 2, 3) scala> var l2 = 1 :: (2 :: (3 :: Nil)) l2: List[Int] = List(1, 2, 3) scala> var l3 = 1 :: 2 :: 3 :: Nil l3: List[Int] = List(1, 2, 3)
最後のは2番目を短く書いた形。
他に、空か調べるisEmpty、indexOf、filter、mapも使えるようだ。
for-Comprehensions
基本的に、for inと同じような動き?
ただし、inではなく<-を使うらしい。
厳密にはyieldも使うみたいだけど、
まだ、違いのわからぬ男なので、今ははしょる。
scala> for(i <- List.range(1. 4)) print(i) 123
rangeがある。
scala> for(i <- List.range(1, 5); j <- List.range(1, i)) print(i, j) (2,1)(3,1)(3,2)(4,1)(4,2)(4,3)
こんな感じで、for()の中に結構好き勝手に書けるみたい。これがちょっと特殊なのかな。
タプル
もあるようだ。
scala> (1, 2) res32: (Int, Int) = (1,2)