読書会(Scalaスケーラブルプログラミング)第1回議事録

[ 戻る ]


2009年11月14日 土曜日
第1回 Scalaスケーラブルプログラミング[コンセプト&コーディング]
(Programming in Scala) (単行本)
Martin Odersky (著), Lex Spoon、Bill Venners (著), 羽生田 栄一 (監修),
長尾 高弘 (翻訳)
読書会

出席者
村山 久保田 飯田 吉本(博) 岩室 今井 小松 遠藤 中島 石黒 小棚木
 児島 遠藤 高橋(智)
門脇 松永 山内 和田 高橋(徹) 根本記

Scala本が online でHTMLで参照可能
http://www.books24x7.com/books24x7.asp にもしアカウントがあれば
trait:トレイト言語の特徴の事

今年のJavaOneでのScala関連の発表
TS-4487 "The Feel of Scala" Bill Venners
TS-5395 "Actor-Based Concurrency in Scala" Philipp Haller EPFL Frank
Sommers Artima

第01章 スケーラブルな言語

Integer型のoperator overload
Javaのスレッドモデルは難しいので、メッセージ渡しのActorモデルとなっている。
述語関数(predicate) は、結果型がbooleanとなる処理、高水準な処理が可能
val = final付きの変数定義の意、最代入不可
var = 再代入可能
(defは関数定義)
val nameHasUpperCase = name.exists(_.isUpperCase) ここで _ はプレースホ
ルダー
簡潔性 柔軟性 検証可能性 安全性 ドキュメント性 が得られる。

The Next 700 Programming Languae
http://portal.acm.org/citation.cfm?id=365257 (PDFではない)

2種類の表記方法、(定義が後置型になっている)
val x = new HashMap[Int, String]()
val x: Map[Int,String] = new HashMap()

第02章 Scalaプログラミングの第一歩

Windowsのscala対話型シェル起動時には scala -Xnojline と打つと、日本語も
使えるようになる。

型推論 : type inference
例: val msg= "hello" この時Stringと言わなくても java.lang.Stringになる。
Val msg:String ="hello" と確定的に書くことも出来る。

Javaでは、戻りは return type、 Scalaはresult type 従って、関数中にreturn
x とかの表記は出てこない。

result のない関数の呼び出しをすると ()Unitが返ってくる javaのvoidと同じ。
scala> def greet() = println ("hello")
greet: ()Unit <--ここで () が引数なしを示している。

val i:Int とかの値を与えない初期化は不可能、Javaのfinalの様な不定な状態
が作れない。
Javaの i++ とかの単項演算子はない i=i+1 と書く

i+=1 とかの動きが不可解
scala> var i=1
i: Int = 1
scala> i+=1
<-- ここで res9 Int = 2 は返ってこない、何故? これは代入式扱いなのか?
()Unitも出てこない。
scala> i
res10: Int = 2

P051 脚注 ※ 12 の「要素ε集合」 は 「要素∈集合」 の誤記

第03章 Scalaプログラミングの次の一歩

:: の結合演算子はメソッド扱い

movieSet.+=("Shrek") この記述に置いて += はメソッド扱い

-> メソッドはScalaに於いては全てのオブジェクトが持つ

Unit = { } は Javaの void () 相当

P069 計算結果の出力を見ると、だたの改行は 長さ1で出力されている CR/LF の
長さは1扱いなのか? らしい。

第04章 クラスとオブジェクト

中置演算子 + で行を終わりにすると、次の行までつながって書ける
例:
> > x+
> > y


[ 戻る ]