無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

配列の基本的な使い方

配列(scala.Array)の基本的な使い方についてまとめ。

生成

「new Array[<要素の型>](<サイズ>)」で生成。

// 生成
var array = new Array[Int](5)
n番目の要素の設定

「配列(<インデックス>) = <値>」を使う。「[]」じゃないよ!

// n番目の要素を設定
array(2) = 20 // 2番目の要素を20に。
array.update(3, 30) // update(n, value)でも同じことができる

// 確保したサイズ外にはアクセスできない。動的に拡張されたりはしない。
// array(5) = 50 // これはArrayIndexOutOfBoundsException
n番目の要素の取り出し

値の設定と同様に「配列(<インデックス>)」で取り出し。

// n番目の要素を取得
println( array(2) ) // 20
println( array.apply(3) ) // 30 // apply(n)でも同じことができる

// 設定と同じく確保したサイズ外にはアクセスできない。
// println( array(5) ) // これはArrayIndexOutOfBoundsException
素数を取得
// 要素数の取得
println( array.size ) // 5
println( array.length ) // 5
引数と合致する最初の要素のインデックスを取得
// 要素数の取得
// 引数と合致する最初の要素のインデックスを取得
println( array.indexOf( 20 ) ) // 2
println( array.indexOf( 100 ) ) // -1 // 要素が存在しない場合-1が返される。
要素の列挙

Rubyライクな列挙関数が使えます。

array.foreach( (i:Int) => { 
  println( i ) 
})

実行結果です。

0
0
20
30
0

ほかにも、map( 各要素に対して、ブロックを適用した結果の配列を返す )とかfilter( 条件にマッチする要素だけを選択する )とかも使えます。

// mapとかもある。
println( "\n-- map" )
var tmp = array.map( (i:Int) => { i*2 } )
tmp.foreach( (i:Int) => { 
  println( i ) 
})

// あと、filterとか。
println( "\n-- filter" )
tmp = array.filter( (i:Int) => { i > 0 } )
tmp.foreach( (i:Int) => { 
  println( i ) 
})

実行結果です。

-- map
0
0
40
60
0

-- filter
20
30

他のAPIについては、リファレンスを参照。(→ Scala Library Documentation - scala.Array)ほかにもいろいろあります。