Scala 基本構文編 目次 • • • • • Scala 概要 基本データ型 変数、定数 配列 (おまけ)Java8のラムダ式とScalaの関数リ テラル Scala 概要 JavaVM上で動作する、比較的新しいプログラミン グ言語。 Javaの1/2程度のコード量かつ、同等の実行速度を もち、Javaとの相互呼び出しが可能。 また、標準ライブラリでマルチコアに対応した並列 処理プログラムを作成することができる。 基本データ型 型名 Byte Short Int Long Char String Float Double Boolean 説明 8ビット符号付き整数 8ビット符号付き整数 32ビット符号付き整数 64ビット符号付き整数 16ビット符号なしUnicode文字 Charシーケンス 32ビットIEEE754単精度浮動小数点数 64ビットIEEE754単精度浮動小数点数 trueかfalse デフォルト値 0 0 0 0 '\0' null 0 0 FALSE 基本的にはJavaと似ています。 String型を除いてJavaではプリミティブ型として存在する型 ですが、Scalaにおいてはすべてオブジェクト型となります。 変数、定数(1) 変数の定義です。 var num:Int = 100 Int型の変数numを定義し、初期値として100を設定しています。 Scalaには型推論があるため、型は省略することも可能です。 また、複数の変数を同時に初期化することも可能です。 var str1,str2,str3 = "abcdef" 上記例では、str1、str2、str3をすべて文字列“abcdef”で初期 化します。 型は、型推論により、String型となります。 変数、定数(2) 定数の定義です。 val firstposition = 1 型は型推論によりInt型になります。 定数としてvalで宣言したので、初期化後にfirstpositionに値を代 入することはできません(コンパイルエラーになります)。 配列(1) 配列の定義です。 val array1 = new Array[String](10) Scalaでは配列はArrayクラスで宣言します。 疑問: なぜ要素数が[]ではなく、()で記述されるのでしょうか。 ヒント: C言語、Java等での[]は、配列用の文法です。 一方、Scalaでは配列はArrayクラスです。 配列(2) 解: 配列へのアクセスは、Arrayクラスのメソッド呼び出しであ るから、です。 例えば、先の例の配列にたいして array1(0)を参照す る場合は内部的には array1.apply(0) と書かれてい るのと同じ動作を行います。 同様に、値を代入する場合には update というメ ソッドが呼びだれているわけです。 おまけ:Java8のラムダ式とScalaの関数リテラル(1) Java8でラムダ式が導入されました。 (String s1) -> { return "(" + s1 + ")"; } 文字列の前後に括弧をつけるだけのラムダ式です。 Javaでは7から型推論も導入されたので、型の省略も可 能です。 さらに、一行で終わる場合は{}を省略でき、引数が1つ なら括弧も省略可能。 return文も省略できたりするので・・・ おまけ:Java8のラムダ式とScalaの関数リテラル(2) こんな感じになりました。 s1 -> "(" + s1 + " )" ちなみにScalaの関数リテラルで書くと、こうなります。 s1 => "(" + s1 + ")" もはやほとんど一緒です。文法的には矢印しかかわりません。 実際に試してはいませんが、メソッドを引数として受け取る高階 関数も、よく似たつくりになっているようです。 ScalaがJavaの後継といわれてましたが、JavaがScala化しはじ めている・・・?
© Copyright 2024 ExpyDoc