Document

Scala 基本構文編 part2
目次
•
•
•
•
概要
コレクション
条件分岐 if
まとめ
概要
前回は、基本的なデータ型と変数の定義を解説し
ました。
今回は、コレクション(今回は不変コレクション)と、
条件分岐といった実用度の高い基礎的な構文に
ついて解説します。
コレクション シーケンス型(1)
JavaでいうListクラスに相当するもので、Scalaでも実際に使
用されるのはListクラスとなります(seqを継承したクラス)。
val list1 = List("0番目の要素");
リストの結合には「::」を使います。
Scalaでは「:」で終わるメソッドは左辺と右辺を入れ替える
ルールがあるため、メソッドを呼び出すListを右に記述しま
す。
val list2 = "追加される要素" :: list1
コレクション シーケンス型(2)
リストでよく使われるメソッドを紹介します。
head
Listの先頭の要素を返す
tail
Listの末尾の要素を返す
isEmpty
Listが空であればtrueを返す
length
Listのサイズ(要素数)を返す
コレクション Map型(1)
キーと値のペアにより構成されるデータのコレクションです。
JavaでのHashMap等にあたるものとなります。
val map1 = Map[String,Int]("key1"->1,"key2"->2,"key3"->3)
ちなみにMapでは要素の追加、削除は +、-といったメソッド
で行います。
こちらは「:」で終わっているメソッドではないので、通常通り左
辺から呼び出す記述となります。
(不変コレクションなので、追加(削除)された新しいMapを返
す、といった処理になります)
val map2 = map1 + ("key4"->4)
コレクション Map型(2)
Mapでよく使われるメソッドの紹介です。
empty
空のMapを返す
+
指定したキー+値を追加した新しいMapを返す
-
指定したキーの要素をMapから削除した新しいMapを返す
keyset
keyのセットを返す
条件分岐 if(1)
基本的な構文はCやJavaといった他の言語とあまり変
わりません。
if(a == 1) b = 1 else c = 1
CやJavaと異なる部分は、分岐であるはずのif文も関
数であるために、戻り値が存在するところです。
Scalaではifに限らず、最後に評価された値を返すと
いう仕組みが基本となっています。
var message = if(a == 1) "true!" else "false!"
この例ではaが1ならmessageには"true!"が入り、aが1
以外であれば"false!"が入ることになります。
条件分岐 if(2)
三項演算子等を使いなれている人は気づいたかもしれま
せんが、以下のように書いたらどうなるでしょうか。
var message = if(a == 1) "true!"
aが1ならmessageには"true!"が入りますが、それ以外
の場合には?
この場合、戻り値がないことをあらわすUnitという値
が入ります(voidのようなイメージで合っているは
ず・・・)。
まとめ
繰り返し文あたりまで解説すると、実用的な知識になってくる
のですが、for文だけでかなりのボリュームになってしまうので
断念しました。
一見とっつきにくいScalaの構文ですが、理解してしまうと、
色々な効率のいい書き方を発掘でき、かなり面白いです。
javaが少しずつ関数型の指向を取り入れている感があるの
で、今のうちScalaをやっておくと、後々にはJava等で使える技
術となるかもしれませんので、興味があれば触ってみてはどう
でしょうか。