** 気になったところだけをコメントとして記載。
これからの議論はインタープリタを使う。
Step 1. Learn to use the Scala interpreter
基本的にはJavaの対応する機能が呼び出されて実施される。
Javaのバイトコードにコンパイルすればパフォーマンは良くな
resXに結果が自動的に収められて後から参照出来る。
Step 2. Define some variables
valは不変、immutable、
varは可変。
文字列はjava.lang.String。
単にStringでも参照出来る。
複数行にまたがるときは途中でenterを入れると|
enterを2回叩くと抜けられる。
** 途中だとインタープリタが分かるところにenterを入れる必要
Step 3. Define some functions
"="
?? defキーワードを使わないで無名関数を変数に代入する書き方も
パラメータの型は省略できない。
result typeは省略できる。
recursiveの時は省略出来ない。
one statementなら{}も省略出来る。
Unitはvoid。戻り値なし。副作用のみの関数。
:quit :qで抜けられる。
:helpなど:xxxがインタプリタへのメタ命令。
Step 4. Write some Scala scripts
スクリプト言語としても使える。
インタープリタで書いたことをそのままファイルにいれてscal
scala.bat hello.scala args...
引数はargsにArrayで入る。
Arrayは0始まりでアクセスは()。args(0)など。
Step 5. Loop with while; decide with if
命令型の記法での。whileとifの説明。
「もっと良いスタイルが次で出てくる」とある。
i++は使えないi+=1は使える。
文末の;は多くの場合に「省略可能」
文法的にはある。shell scriptににている?
while, ifの論理式の()は省略不可。
rubyは省略可。
while, ifのbodyが一文なら{}は省力可。
Step 6. Iterate with foreach and for
** 今度は関数的な書き方。
関数リテラルの書き方
(x: Int, y: Int) => x + y
関数リテラルは変数に代入出来る。
val f = (x: Int, y: Int) => x + y
val f: (Int, Int) => Int = (x, y) => x + y
?? 部分適用は??
パラメタの型は省略可能。()も省略可能。
?? 戻り値の型は指定しない?? それとも省略しているだけ??
?? 型宣言だけを出来るのはclassだけ。変数は実体が必要??
パラメタそのものも省略できる。
型がもともと分かっているから。
for文は関数型的
for (arg <- args) println(arg)
argはvarに見えるがval
毎回新しく作られる。
bodyで変更不可。
** for文は関数型への移行を促進するために敢えて関数的なものだ
Conclusion
次章でもoverviewが続く
0 件のコメント:
コメントを投稿