contentRainbowDevilsLandけんじの外部記憶です。kenjiif式Scalaのif式はJavaのif文と違い、値を返します。if式が値を返すことでより簡潔にコードを記述することができます。"default.txt"上記の例ではvarではなくvalが使えるのもメリットです。等式推論をサポートしやすくなります。“default.txt”)と書くことができます。(これはメリットなのか??コンパイラが一時変数を使わないような最適化を行うことはできるだろうけど、コード的には見づらいだけのような。)whileループScalaにもJavaや他の言語でおなじみのwhileが使えます。b}do-whileもあります。null)whileとdo-whileは式では無くループです。式では無いのでUnitを返します。UnitについてJavaで言う所のvoidですが、voidと違いUnitはUnit値という値があります。Unit値は()で表現します。true()自体は変数名として認識される?whileは純粋関数型言語では無い場合がありますが、Scalaでは互換性のために用意されています。whileは使わずより関数型言語ぽく書く方が良い場合が多いでしょう。上記のgcdLoopは次のように書けます。y)for式Scalaのfor式はJavaのfor文とはだいぶ異なります。for式はコレクションに対する処理を簡潔に書くことができます。filesHereの部分はジェネレータ(generator)と呼び、filesHereから一つずつ取り、valなfileに代入します。filesHereがArray[File]型なのでfileもFile型となります。10とRangeを作れば可能です。sizeとすることで可能です。"+list(i))フィルタリングリストをフィルタリングしたい場合はfor式の中に条件を書くことができます。println(file)複数のフィルタを同時に使うこともできます。println(file)入れ子の反復処理for式に複数の<-節を記述するとループを入れ子にすることができます。line.trim)上記のfor式では括弧ではなく中括弧を使うことでセミコロンが必要という罠を回避できます。line.trim)for式の中での束縛for式の中で変数を定義することも可能です。trimmed)for式の中の変数定義はval変数となります。(Scala的に束縛と変数定義は同義?)for式の結果で新しいコレクションを作成for式の本体の前にyieldキーワードを記述すると、その本体の戻り値をコレクションにする事ができます。filescalaFilesの型はfileがFile型なので、Array[File]になります。for式の本体をブロックにすることももちろん可能です。次の例ではArray[File]でループして、Array[String]を生成しています。}for式はさらに機能があるようなので、第23章でより詳細な解説があるようです。try式による例外処理ScalaにもJavaと同じように例外を投げることができます。IllegalArgumentExceptionまた、throwはNothing型の結果を返します。従って次のように記述することが可能です。println("なんかIOエラー")}Scalaの例外はJavaと違い、throw節で明示的に記述する必要や、try-catchの強制はありません。finally節Scalaにもfinallyがあります。file.close()}また、finally節も値を返します。finally節で値を返すことはせず、ファイルのcloseなど副作用のみにしておくのが良いでしょう。次のコードは2を返します。}しかし次のコードは1を返します。関数型言語のパターンマッチをScalaではmatch式で使うことができます。超高機能なswitchという感じです。println("huh?")}caseにはJavaと違いあらゆる型を指定することができます。高機能なので15章で詳細に解説があります。breakとcontinueはScalaには無いそのような邪悪なものはScalaには必要無いと判断されたようです。(実際には関数リテラルとの絡みで何らかの問題があるようだ)continueはフィルタやif式を、breakはフラグを用いると言うので解決できます。変数のスコープ基本的にJavaと同じです。変数のシャドウイング(shadow)が可能です。println(a)}println(a)Javaでは上記のようなコードは変数の多重定義でエラーですが、Scalaでは動作します。2に続いて1を出力します。Replyコメントを投稿するには、下の計算の答えを入力する必要があります。答えは半角数字で入力してください。