Jul 3, 2013

Scala メモ

配列定義

# 同時に初期値を与える
val arr = Array( 1, 2, 3 )
( val arr = Array.apply( 1, 2, 3 ) と同義 )

# 初期化だけで後で値を与える
val arr = new Array[ Int ](3)
arr(0) = 1
arr(1) = 2
arr(2) = 3
( arr(0) = 1 は、arr.update( 0, 1 )と同義)

# var で変数だけ定義
var arr: Array[ Int ] = null
arr = new Array(10)


配列の要素を処理
array.foreach( v => 関数本体 )

array.foreach( ( v: 型 ) => 関数本体 )

# 部分適用された関数(partially applied function)
array.foreach( 式 )

for( v <- array ) 式


List定義
Arrayはミュータブルなので、可能な場合はListを使う方がベター

#Listの連結
List( 1, 2 ) ::: List( 3, 4 )

# List の先頭に追加
1 :: List( 2, 3 )

# 末尾に追加
List ( 1, 2 ) :+ 3

# 空のList Nil
1:: 2 :: 3 :: Nil
res0: List[Int]  = List( 1, 2, 3)


注意:
先頭に追加はO(1)だが、末尾追加はO(n)なので、基本的には先頭追加を考える。
先頭追加で最後にreverse することで代用できる場合はそうする。




for式
for( i <- 0 to 2 ) 式
( 0 to 2 は、0.to( 2 ) と同義 scala.collection.immutable.Range.Inclusive = Range(0, 1, 2))



(まだ途中)