■ はじめに
https://dk521123.hatenablog.com/entry/2023/03/10/193805
の続き。 Scalaで開発することになりそうなので 予習してたら、Javaと比べて、結構、変わっていた。 まずは、簡単な文法から整理していく なお、以下のサイトで動作確認しながらやるといいかも。
https://scastie.scala-lang.org/CEpZy3v4Taa0MCStp3LCYg
目次
【0】Scala 1)特徴 【1】変数定義 1)データ型 【2】条件分岐 1)if文 2)三項演算子 3)match文 【3】ループ
【0】Scala
2001年に、Javaのジェネリックスの共同設計者と知られる スイス連邦工科大学ローザンヌ校(École Polytechnique Fédérale de Lausanne; EPFL) のマーティン・オーダスキー教授によって設計されたプログラム言語。
1)特徴
* Java仮想マシン(JVM; Java Virtual Machine)上で動作 * オブジェクト指向プログラミングと関数型プログラミング の両方を実行できるハイブリッド言語
【1】変数定義
* val / var がある
https://qiita.com/yagiyuki/items/1455256746d84e52f9fd
val
* 再入不可 * 定数 => 普段は、こっちを使うようにする
var
* 再入可能 * Javaの変数定義と同じ
サンプル
val val1 = "Hello" // val val: String = "Hello" var val2 = "World" // Error: Reassignment to val val1 // val1 = val1 + "," val2 = val2 + "!!" println(val1 + " " + val2)
1)データ型
* Boolean や Int などすべての値がオブジェクトとして定義 => まずは、以下のサイトの階層図をみた方がいい
https://docs.scala-lang.org/ja/tour/unified-types.html
* データ型については、以下のサイト参照。
https://qiita.com/msano/items/151a6402605df071a7de
データ型 | 説明 |
---|---|
Any | 全てのデータ型のスーパータイプ |
AnyVal | 値型(Int,Boolean, Charなど)のスーパータイプ |
Unit | 何も返すものがないことを表す方(Javaのvoid) |
AnyRef | 参照型(String, List, Null)のスーパータイプ |
Null | Javaのnullの型 |
Nothing | 全ての型のサブタイプ |
【2】条件分岐
* 注目すべき Java との違いは、 switch文の代わりに、match文が増えた
https://qiita.com/kaysquare1231/items/19b1bf58e8bb36f605c4
1)if文
* if/else if/else と Java と変わらない
2)三項演算子
val weight: Int = 95 val result = if (weight <= 100) "OK" else "Bad" println("Result: " + result)
3)match文
val value = 2 value match { case 1 => println("Hello") case 2 => println("World") case _ => println("Bye...") }
【3】ループ
* 以下の関連記事を参照のこと => break 文がデフォルトではない、、、
Scala ~ 基本編 / 繰り返し ~
https://dk521123.hatenablog.com/entry/2023/01/24/000000
関連記事
Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2023/01/07/000000
Scala ~ 基本編 / 繰り返し ~
https://dk521123.hatenablog.com/entry/2023/01/24/000000
Scala ~ 基本編 / Option型 ~
https://dk521123.hatenablog.com/entry/2023/03/09/000000
Scala ~ 基本編 / メソッド ~
https://dk521123.hatenablog.com/entry/2023/03/03/000000
Scala ~ 基本編 / クラス ~
https://dk521123.hatenablog.com/entry/2023/03/14/000857
Scala ~ 基本編 / コレクション ~
https://dk521123.hatenablog.com/entry/2023/03/13/000345
Scala ~ 基本編 / 日付・日時 ~
https://dk521123.hatenablog.com/entry/2023/03/08/000000
Scala ~ 基本編 / 正規表現 ~
https://dk521123.hatenablog.com/entry/2023/03/18/034704
Scala ~ 基本編 / ジェネリック
https://dk521123.hatenablog.com/entry/2023/03/21/003817
Scala ~ Enum ~
https://dk521123.hatenablog.com/entry/2023/01/05/000000
Scala ~ ファイル名・パスの扱い ~
https://dk521123.hatenablog.com/entry/2023/03/11/000000
Scala ~ ファイルハンドリング ~
https://dk521123.hatenablog.com/entry/2023/01/03/000000
Scala ~ YAML ~
https://dk521123.hatenablog.com/entry/2023/03/16/012034
Scala ~ JDBC / DB接続 ~
https://dk521123.hatenablog.com/entry/2023/03/26/000950
Scala ~ AWS SDK ~
https://dk521123.hatenablog.com/entry/2023/03/24/211033
Scala ~ AWS SDK / サンプル ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Spark/Scalaの開発環境構築 ~ Windows編 ~
https://dk521123.hatenablog.com/entry/2023/03/20/115450
SBT ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/22/000000
SBT ~ 基本編 / build.sbt ~
https://dk521123.hatenablog.com/entry/2023/01/27/000000
SBT ~ 基本編 / sbtコマンド ~
https://dk521123.hatenablog.com/entry/2023/01/26/000000
SBT ~ sbtプラグイン ~
https://dk521123.hatenablog.com/entry/2023/01/25/000000
ScalaTest ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/27/001306
ScalaTest ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/03/28/003906
ScalaTest ~ with ScalaCheck ~
https://dk521123.hatenablog.com/entry/2023/03/29/000014
ScalaTest ~ with Mockito ~
https://dk521123.hatenablog.com/entry/2023/03/31/002830