Scala ステートメント
Java 言語をよく理解していれば、Scala を学ぶのは簡単です。 Scala と Java の構文の最大の違いは、行末記号がオプションであることです。相互にメソッドを呼び出して通信するオブジェクトのコレクションとして定義できる Scala プログラムを考えてみましょう。ここで、クラス、オブジェクト、メソッド、一時変数と呼ばれるものを簡単に見てみましょう。
オブジェクト - オブジェクトには状態と動作があります。たとえば、犬には色、名前、品種などの状態があり、振る、吠える、食べるなどの行動もあります。オブジェクトはクラスのインスタンスです。
クラス - クラスは、動作を記述したりサポートするオブジェクトの種類を示すためのテンプレート/ブループリントとして定義できます。
メソッド - メソッドは本質的にアクションです。クラスには多くのメソッドを含めることができます。ロジックが記述され、データが操作され、すべてのアクションが実行されるのはメソッド内です。
フィールド-すべてのオブジェクトには、フィールドと呼ばれる独自の一時変数のセットがあります。オブジェクトの状態は、これらのフィールドに割り当てられた値によって作成されます。
最初の Scala プログラム:
インタラクティブモードプログラミング:
パラメータとしてスクリプト ファイルを渡さずにインタープリタを呼び出すと、次のプロンプトが表示されます:
C:>scalaWelcome to Scala version 2.9.0.1Type in expressions to have them evaluated.Type :help for more information.scala>
Scala プロンプトに次のテキストを入力し、Enter キーを押します:
scala> println("Hello, Scala!");
これにより、次の結果が生成されます:
Hello, Scala!
スクリプトモードプログラミング:
簡単な文を出力する簡単なコードを見てみましょう: Hello, World!
object HelloWorld { /* This is my first java program. * This will print 'Hello World' as the output */ def main(args: Array[String]) { println("Hello, world!") // prints Hello World }}
ファイルを保存し、プログラムをコンパイルして実行する方法を見てみましょう。以下の手順に従ってください:
メモ帳を開いて上記のコードを追加します。
ファイルを HelloWorld.scala として保存します。
コマンド プロンプト ウィンドウを開き、プログラム ファイルを保存したディレクトリに移動します。 C:>
「scalac HelloWorld.scala」と入力し、Enter キーを押してコードをコンパイルします。コードにエラーがない場合、コマンド プロンプトは自動的に次の行に戻ります。
上記のコマンドは、現在のディレクトリにいくつかのクラス ファイルを生成します。名前の 1 つは HelloWorld.class です。これは、Java 仮想マシン (JVM) 上で実行できるバイトコードです。
次に、「scala HelloWorld」と入力してプログラムを実行します。
ウィンドウに「Hello, World!」と印刷されているのが見えます。
C:> scalac HelloWorld.scala C:> scala HelloWorldHello, World!
基本文法
Scala プログラムに関しては、次の点に注意することが非常に重要です。
大文字と小文字を区別する - Scala では大文字と小文字が区別されます。つまり、識別子 Hello と hello は Scala では異なる意味を持ちます。
クラス名 - すべてのクラス名の最初の文字を大文字にします。
複数の単語を使用してクラス名を形成する必要がある場合は、各単語の最初の文字を大文字にします。
例: class MyFirstScalaClassメソッド名 - すべてのメソッド名の最初の文字は小文字です。
メソッドの名前を形成するために複数の単語が使用されている場合は、各単語の最初の文字を大文字にする必要があります。
例: def myMethodName()プログラム ファイル名 - プログラム ファイルの名前はオブジェクト名と正確に一致する必要があります。
ファイルを保存するときは、オブジェクト名を使用して保存し (Scala では大文字と小文字が区別されることに注意してください)、ファイル拡張子として「.scala」を追加する必要があります。 (ファイル名とオブジェクト名が一致しない場合、プログラムはコンパイルされません)。
例: 「HelloWorld」がオブジェクトの名前であると仮定します。次に、ファイルを「HelloWorld.scala」として保存する必要がありますdef main(args: Array[String]) - Scala プログラムは、すべてのプログラムの必須のプログラム エントリ部分である main() メソッドから処理を開始します。スカラプログラム
Scala 修飾子:
すべての Scala コンポーネントには名前が必要です。オブジェクト、クラス、変数、メソッドの名前を識別子と呼びます。キーワードを識別子として使用することはできません。また、識別子では大文字と小文字が区別されます。 Scala は次の 4 つの型識別子をサポートします:
リテラル識別子
英数字の識別子は文字またはアンダースコアで始まり、文字、数字、またはアンダースコアを使用できます。 「$」文字は Scala の予約キーワードであり、識別子には使用できません。有効なアルファベットの識別子は次のとおりです:
age, salary, _value, __1_value
以下は不正な識別子です:
れーれーオペレーター識別子
演算子識別子は 1 つ以上の演算子文字で構成されます。操作文字は、+、:、?、~、# などの印刷可能な ASCII 文字です。法的なオペレーター識別子は次のとおりです:
$salary, 123abc, -salary
Scala コンパイラーは、演算子識別子を内部的に「ロール」して、$ 文字を埋め込んで有効な Java 識別子にします。たとえば、識別子:-> は内部的に $colon$minus$greater として表されます。
混合識別子
混合識別子は、英数字の識別子とそれに続くアンダースコアと演算子によって識別されます。合法的な混合識別子は次のとおりです:
+ ++ ::: <?> :>
ここで、 unary_+ は単項 + 演算子を定義するためのメソッド名として使用され、 myvar_= は代入演算子を定義するためのメソッド名として使用されます。
直接の識別子
リテラル識別子は、バックティック (` . . . `) で囲まれた任意の文字列です。以下は法的なワードマークです:
unary_+, myvar_=
Scala キーワード:
次のリストは、Scala の予約語を示しています。これらの予約キーワードは、定数、変数、またはその他の識別子名として使用することはできません。
抽象的 | ケース | キャッチ | クラス |
デフ | やります | それ以外 | 延長します |
偽 | 決勝 | ついに | |
誰かのために | もし | 暗黙的 | インポート |
怠け者 | マッチ | 新しい | ヌル |
オブジェクト | オーバーライド | パッケージ | プライベート |
保護されました | 戻ります | 封印 | 超 |
これ | 投げる | 特性 | 試してみてください |
本当 | タイプ | ヴァル | ヴァル |
その間 | と一緒に 収量 | ||
- | : | = | => |
<- | <: | <% | >: |
# | @ |
Scala のアノテーション
Scala は、Java と同様に、単一行および複数行のコメントをサポートします。複数行のコメントはネストできますが、正しくネストする必要があります。コメントおよび使用可能なすべての文字は、Scala コンパイラーによって無視されます。
りー空白行と空白:
空白のみを含む行 (コメントが含まれる可能性がある) は空行と呼ばれ、Scala はそれを完全に無視します。タグはスペースやコメントで区切ることができます。
改行:
Scala は行指向の言語であり、ステートメントはセミコロン (;) または改行文字で終了できます。ステートメントの末尾のセミコロンは通常はオプションです。目的のステートメントが 1 行に単独で表示されている場合は、そのステートメントを入力できます。一方、1 行に複数のステートメントを記述する場合はセミコロンが必要です:
`x` `<clinit>` `yield`
Scala パッケージ:
パッケージはコード名付きのモジュールです。たとえば、Lift ユーティリティ パッケージ net.liftweb.util などです。パッケージ宣言は、以下に示すように、ソース ファイル内のコメント以外の最初の行です。
object HelloWorld { /* This is my first java program. * This will print 'Hello World' as the output * This is an example of multi-line comments. */ def main(args: Array[String]) { // Prints Hello World // This is also an example of single line comment. println("Hello, world!") }}
Scala パッケージをインポートすると、現在のコンパイル スコープ内で参照できるようになります。次のステートメントは、インポートされた scala.xml パッケージの内容です:
val s = "hello"; println(s)
カプセル化されたクラスとオブジェクトはインポートできます。たとえば、scala.collection.mutable から HashMap をインポートできます。 複数のクラスまたはオブジェクトは、単一のカプセル化された scala.collection.immutable パッケージ (TreeMap や TreeSet など) からインポートできます。