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等で使える技 術となるかもしれませんので、興味があれば触ってみてはどう でしょうか。
© Copyright 2024 ExpyDoc