ログイン
編集不可のページディスカッション情報添付ファイル

2013-03-08 06:01:39時点のリビジョン1

メッセージを消す
alstamber/Scala

MMA

なにこれ

とりあえず触ってみる

   1 scala> 1+1
   2 res0: Int = 2

   1 scala> res0 * 5
   2 res1: Int = 10

   1 scala> println("Hello, world!")
   2 Hello, world!

変数の定義

   1 scala> val msg = "Hello, world!"
   2 msg: String = Hello, world!

   1 scala> val msg2:String = "Hello, world!"
   2 msg2: String = Hello, world!

varとval

   1 scala> val msg = "Hello, world!!"
   2 <console>:8: error: reassignment to val
   3        msg = "Hello, World!!"

関数定義

   1 def 関数名(引数名:引数型, 引数名:引数型, ...):戻り値型 = 関数の式

   1 def hello(name:String):String = {
   2   return "Hello! " + name
   3 }

   1 def hello(name:String):String = {
   2   "Hello! " + name
   3 }

   1 def hello(name:String) = {
   2   "Hello! " + name
   3 }

   1 def hello(name:String) = "Hello! " + name

単独で動くプログラムをつくってみる

   1 object hoge
   2   def main(args:Array[String]) = {
   3     //メインの処理
   4   }
   5 }

scalac hoge.scala

scala hoge

Scalaらしいループ

   1 var i = 0
   2 while(i < args.length) {
   3   println(args(i))
   4   i += 1
   5 }

   1 args.foreach((arg:String) => println(arg))

   1 args.foreach(arg => println(arg))

配列

配列の生成

   1 val hoge = Array[String](3)

配列への代入と参照

   1 hoge(2) = "kyoko"
   2 println(hoge(2))

便利な配列の生成方法

   1 val hoge = Array("Akari", "Kyoko", "Yui", "Chinatsu")

リスト

リストの生成

   1 val hoge = List(2, 3, 5, 7)

リストの結合

   1 val hoge = List(2, 3)
   2 val fuga = List(5, 7)
   3 val piyo = hoge ::: fuga

リストの先頭に要素を追加

   1 val hoge = List(3, 5, 7)
   2 val fuga = 2 :: hoge

   1 hoge.::(2)

タプル

タプルを作る

   1 val hoge = (1, "Kyoko", 2, "Akari")

タプルを使う

   1 println(hoge._2)  // Kyoko と表示される
   2 

クラス

   1 class Hoge {
   2   var hoge = 1 //フィールド
   3   var fuga = 3 //フィールド
   4 
   5   def myMultiple() = hoge * fuga //メソッド
   6 }

   1 val a = new Hoge()

   1 a.hoge = 2  // OK
   2 

メソッド

   1 private def hello() = "Hello, World!"

シングルトンオブジェクト

シングルトンオブジェクトの定義

   1 object Hoge {
   2   // あーだこーだ
   3 

シングルトンオブジェクトの性質

コンパニオンクラスとコンパニオンオブジェクト

コンパニオンオブジェクトの例

基本型

基本リテラル

整数リテラル

浮動小数点リテラル

文字リテラル

文字列リテラル

シンボルリテラル

   1 `hoge //hogeのシンボルリテラル
   2 

   1 val hoge = "hoge"
   2 val hoge2 = "hoge" //hogeとhoge2は違うオブジェクトになっている
   3 
   4 val fuga = `fuga
   5 val fuga2 = `fuga //fugaとfuga2は同じオブジェクト
   6 

Booleanリテラル

演算子

   1 1 + 2
   2 (1).+(2)  // この2つは同じ意味
   3 

比較演算子について

   1 "hoge" == "hoge" //左と右の文字列は同じオブジェクトかも知れないし違うオブジェクトかもしれないから、TrueかもしれないしFalseかもしれない
   2 

   1 "hoge" == "hoge" //かならずTrue
   2 

演算子の優先順位について

リッチラッパー

   1 0 min 5 // min演算子で計算されて結果が0になる
   2