提供: tty00

移動: 案内検索
(パターンマッチ)
(パターンマッチ)
行162: 行162:
 
   case _ => println("default")
 
   case _ => println("default")
 
}
 
}
 +
 +
//パターンガード
 +
x match {
 +
  case x:Int => println("x is Int") //データの型でマッチング
 +
  case x if x  < 5 => println("x<5") //if文でマッチング
 +
}
 +
 
</source>
 
</source>
  

2013年12月21日 (土) 09:59時点における版

変数と定数

  • 変数の定義
var x:Int = 10
  • 定数の定義
val x:Int = 10

配列

var xs1:Array[Int] = new Array[Int](10);
var xs2:Array[Int] = Array[Int](1,2,3);
var a = xs2(0) //要素にアクセスする,a = 1;

コメント

/* comment1 */
// comment2

コレクション

List

val xs1:List[Int] = List()
val xs2:List[Int] = List(1,2,3)
var a = xs2(0) //要素にアクセスする,a = 1;
val xs3 = xs1 :: xs2 //Listを結合する。
val xs4 = Nil //空のList
Listのメソッド
メソッド 説明
head Listの先頭要素を返す
tail Listの先頭要素を除く要素のListを返す
isEmpty Listが空であればtrueを返す
length Listのサイズを返す


Map

val map = Map[String,Int]("key1"->1,"key2"->2,"key3"->3) 
 
val a = map("key1") //要素にアクセスする
Mapのメソッド
メソッド 説明
empty 空のMapを返す
+ 指定したキーと要素とペアを追加したMapを返す
- 指定したキーの要素を抜いたMapを返す
size Mapのサイズを返す
keySet キーのセットを返す
values Mapの値をIterableで返す

Tuple

異なる型の要素を格納可能

val tuple = ("val1",10,"1234",200.0)
 
tuple._1 //要素にアクセスする
tuple._2 //要素にアクセスする
tuple._3 //要素にアクセスする
tuple._4 //要素にアクセスする

構文

条件文

Scalaのifは最後に評価された値を返す。

if( x > 5 ) println("true") else println("false")
 
//else if文
if( x > 5 ){
    println("x>5")
}else if (x == 1){
    println("x=1")
}else{
    println("else") 
}


for文

val xs = List(1,2,3,4,5)
val ys = List(100,200,300,400,500)
 
for( x <- xs; y <- ys){
  println(x+y)
}
 
//フィルタ
for( x <- xs if x>3){
  println(x)
}
 
//yield、新しいコレクションの生成
val xs = List(1,2,3,4,5)
val ys = for( x <-xs) yield x + 100 //ys = List(101, 102, 103, 104, 105)

while文

var i = 0
while( i<10 ){
   println(i)
   i += 1
}

do-while文

var i = 0
do{
   println(i)
   i += 1
}while( i<10 )

例外処理 try、catch、finally

//例外処理
try{
  var z = 100/0
}catch{
  case e => { println("exception!") }
 
}finally {
  println("finally!")
}
 
//例外の発生
throw new Exception("throw Exception!")

パターンマッチ

var x = 1
x match{
  case 1 => println("x is 1")
  case 2 => println("x is 2")
  case _ => println("default")
}
 
//パターンガード
x match {
  case x:Int => println("x is Int") //データの型でマッチング
  case x if x  < 5 => println("x<5") //if文でマッチング
}

関数