CC BY-SA 4.0 で公開されている Essential Scala の 1 Getting Started を日本語訳したものです。日本語訳においてもライセンスは同じものを継承しています。毎日少しずつ翻訳を進めており、最新の日本語訳は Scala 入門 (Essential Scala) にあります。
原書:underscoreio/essential-scala
訳書:takuya0301/essential-scala-ja
ライセンス
Written by Dave Gurnell and Noel Welsh. Copyright Underscore Consulting LLP, 2015-2017.
Translated by Takuya Tsuchida. Copyright Takuya Tsuchida, 2020.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
目次
序文
第1章 はじめに
第2章 式・型・値
第3章 オブジェクトとクラス
第4章 トレイトによるデータモデリング
第5章 シーケンス処理
第6章 コレクション
第7章 型クラス
第1章 はじめに
本書では、Scala コードの短い例を使って学んでいきます。それには2つの推奨される方法があります。(訳注:訳書において Scala IDE を使用する方法は非推奨です。理由は「Scala IDE を準備する」の節に記載しています。)
-
Scala コンソール (Scala console) を使用する(コマンドラインが好きな人にはよいでしょう)
-
Scala IDE の ワークシート (worksheet) を使用する(IDE が好きな人にはよいでしょう)
ここでは、それらを準備するための各工程を一通り説明していきます。
Scala コンソールを準備する
http://scala-lang.org の手順に従って、コンピューターに Scala を設定します。(訳注:日本語訳を読むにあたって推奨する事前準備も参考にしてみてください。)一度 Scala がインストールされれば、コマンドラインプロンプトで scala
と入力することで、対話的なコンソールを実行できるようになるはずです。これは macOS の例です。(訳注:内容を2020年現在のものに修正しています。)
dave@Jade ~> scala
Welcome to Scala 2.13.1 (OpenJDK 64-Bit Server VM, Java 1.8.0_242).
Type in expressions for evaluation. Or try :help.
scala>
scala>
プロンプトで個々の式を入力し、Enter キーを押下することで、それらをコンパイルし、実行することができます。
scala> "Hello world!"
res0: String = Hello world!
一行の式を入力する
単純な式を入力してみましょう。
scala> 1 + 2 + 3
res1: Int = 6
Enter キーを押下したとき、コンソールは3つのことを応答します。
-
識別子 (identifier)
res1
-
型 (type)
Int
-
値 (value)
6
次章で見ていくように、Scala のすべての式は 型 と 値 を持ちます。型はコンパイル時に決定され、値は式を実行するときに決定されます。ここでは、その両方が報告されています。
識別子 res1
は、式の結果を将来の式の中で参照できるように、コンソールが提供する便利なものです。例えば、下記のように先ほどの結果を2倍することができます。
scala> res1 * 2
res2: Int = 12
有用な値を生成しない式を入力すると、コンソールは応答として何も印字しません。
scala> println("Hello world!")
Hello world!
ここで、"Hello world!"
という出力は println
という記述に由来しています。入力した式は実際のところ値を返しません。コンソールは上記で見た出力に類するものを提供していないのです。
複数行の式を入力する
簡単に複数行に渡る長い式を分割することができます。式が終わる前に Enter キーを入力すると、コンソールは次の行に継続していることを示す |
という文字を印字します。
scala> for(i <- 1 to 3) {
| println(i)
| }
1
2
3
一度に複数行の式を入力したいことがあります。このような場合、:paste
コマンドを使用することができます。単純に :paste
と入力し、Enter キーを押下し、コードを記述もしくはコピー&ペーストしてください。すべてを入力し終わったら Ctrl+D
を押下してください。通常のようにコードのコンパイルと実行がされます。
scala> :paste
// Entering paste mode (ctrl-D to finish)
val x = 1
val y = 2
x + y
// Exiting paste mode, now interpreting.
x: Int = 1
y: Int = 2
res6: Int = 3
ファイルに Scala コードがあるのであれば、ファイルの内容をコンソールの中に貼り付けるために :paste
を使用できます。これは、コンソールに式を再入力するよりはるかに便利です。例えば、1 + 2 + 3
を含む example.scala
という名前のファイルがあるとき、下記のように :paste
を使用できます。
scala> :paste example.scala
Pasting file example.scala...
res0: Int = 6
式の型を印字する
コンソールを使用する上での最後のテクニックです。時々、式を実際に実行せずに、その型を知りたいことがあります。それをするために、:type
コマンドを使用することができます。
scala> :type println("Hello world!")
Unit
コンソールは、この式の println
という記述を実行しないことに注意してください。コードをコンパイルし、この場合は Unit
と呼ばれる何らかの型を印字しているだけです。
Scala の Unit
は Java や C の void
と同じです。詳細は第2章を読んでください。
Scala IDE を準備する
Scala IDE は非推奨です(訳者追記)
Scala IDE は、2018年1月に 4.7.1 RC3 がリリースされたのを最後に更新がありません。そのため、訳書においては Scala IDE の利用を非推奨とし、本節を翻訳していません。
なお、Scala の IDE としては IntelliJ IDEA が主流になっています。ワークシートの機能もありますので、IDE を利用したい場合は IntelliJ IDEA をインストールすることで代替できると思います。しかし、訳書においては Scala コンソールでのみ検証しておりますので、Scala コンソールの利用を強く推奨します。