対話型評価環境(REPL)
まずは、Scalaの対話型評価環境(REPL、Read-eval-print loop)を試してみましょう。対話型評価環境では、ほぼすべてのScalaの機能をコンパイルすることなく試すことができます。なお、REPLは1文ごとに自動で型を表示してくれるので、参考にしてください。REPLはコマンドプロンプトで「scala」とタイプすると起動し、「exit」とタイプすると終了します。
ここからしばらくの間は、このREPLを使って解説していきます。コマンドラインかターミナル上で、「scala」とタイプしてREPLモードに遷移してください。
Scalaの基本文法
Scalaは、オブジェクト指向が徹底されています。そのため、リテラルも変数も関数も、値を返すオブジェクトです。そして、ifやforなどの制御構造も値を返します。制御構造は、JavaやC言語ユーザーにとって違和感のない表記法が採用されています。表2は、リテラルとコメントの一覧です。ヒアドキュメントで記述すると、エスケープ文字や改行を、そのまま書くことができます。なお、scaladocとはjavadocと同じで、ソースコード中のscaladocコメントから、ドキュメントを生成するためのコメント形式です。
| 数値 | 1, 1.0, 0x1F, 017,777L |
| Boolean | true, false |
| 文字 | 'a' |
| 文字列 | a , '\u0041', "abc", "\u0041\u0042" |
| ヒアドキュメント | """C;\scala\test""" ※URLや、複数行の文字列を扱うのに便利です。 |
| 1行コメント | // 1行コメントです |
| 複数行コメント | /* 複数行 コメントです */ |
| scaladocコメント | /** クラス・メンバの説明 */ |
変数
変数の書式は、次のとおりです。
宣言詞 変数名 : 変数の型 = 初期値
「: 変数の型」の部分は大抵の場合、省略可能です。省略した場合はScalaコンパイラが自動で型を判定します(型推論)。なお、変数には3種類あるので順に解説していきます。
1)var(再代入可能)
var(再代入可能)は書き換え可能な変数です(LIST1)。
scala> var testVar = 1 //変数を宣言&初期化
testVar: Int = 1
scala> testVar = 2 //再代入可能
testVar: Int = 2
scala> testVar = "asdf" //異なる型の値を代入する事はできない
<console>:5: error: type mismatch;
found : java.lang.String("asdf")
required: Int
testVar = "asdf"
2)val(再代入不可能)
val(再代入不可能)は、Javaのfinal、C/C++のconstに相当し、書き換え不可能な変数です(LIST2)。
scala> val testVal = 1
testVal: Int = 1
scala> testVal = 2 //再代入は出来ない
<console>:5: error: reassignment to val
testVal = 2
^
3)lazy val(再代入不可、遅延評価)
lazy val(再代入不可、遅延評価)は、valと同じですが、初めて参照されたときにメモリ領域が確保されます。LIST3の時点で、はじめてメモリ上に確保されますが、メンバ変数をlazy valとして宣言しておくと効率的にメモリを使用できます。
scala> lazy val testLazyVal = 1 //宣言と初期化
testLazyVal: Int = 1
// この時点では、メモリ上には存在しない。
scala> val test = testLazyVal //参照されると、メモリ上に確保される
test: Int = 1
この記事は参考になりましたか?
- 新開発言語「Scala」の実体連載記事一覧
-
- Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~補足編
- Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~後編
- Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編
- この記事の著者
-
株式会社パテントビューロ 三木隆史(ミキ タカフミ)
株式会社パテントビューロ所属。マネージャー業務と平行して、Webアプリケーション開発、自然言語系の研究開発を行なう。以前はC言語による組込開発。違和感なくScalaへ移行できたことや、ロジック部分に注力できる生産性の高さに驚いている。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
株式会社パテントビューロ 木村吉博(キムラ ヨシヒロ)
政府系研究機関での研究開発を経て、現在、株式会社パテントビューロにて、プログラミング(知財関連文書(SGML/XML)の変換バッチ処理のScalaでの記述など)を担当している。複雑でイレギュラーな記述も多々見られる大量の文書を相手にする際に、Scalaの書きやすさと高速性とに大いに助けられている。か...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

