Latest web development tutorials

Scalaの基本的な文法

あなたが前にJavaプログラマであり、Java言語の基礎を学び、もしそうなら、あなたはすぐに基本的な文法のScalaを学ぶことができます。

スカラ座とJavaの最大の違いは、次のとおりです。文の終わ​​りにScalaのセミコロン;オプションです。

私たちは、メッセージングを実現するための各メソッドの呼び出しによって、オブジェクトのコレクションであるScalaのプログラムを考えることができます。 次に我々は、クラス、オブジェクト、メソッド、インスタンス変数の概念を理解することがあります:

  • オブジェクト-オブジェクトは、プロパティと動作を持っています。たとえば、次のように犬のような属性:色、名前、行動:というように、呼び出し実行し、食べて。 オブジェクトは、クラスのインスタンスです。

  • クラス-クラスは抽象オブジェクトであり、オブジェクトは、クラスの特定のインスタンスです。

  • 方法-基本的な行為に記載された方法は、クラスには、複数のメソッドを含めることができます。

  • フィールド-各オブジェクトはインスタンス変数、すなわちフィールドの独自のセットを持っています。フィールドの割り当てを介して、オブジェクトのプロパティを作成します。


最初のScalaプログラム

双方向番組

対話型プログラミングでは、次のコマンドを呼び出すことができ、スクリプトファイルを作成する必要がありません。

$ scala
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31).
Type in expressions to have them evaluated.
Type :help for more information.

scala> 1 + 1
res0: Int = 2

scala> println("Hello World!")
Hello World!

scala> 

スクリプト形式

次のように我々はまた、コード、HelloWorld.scalaのコードを実行するHelloWorld.scalaファイルを作成することができます。

object HelloWorld {
   /* 这是我的第一个 Scala 程序
    * 以下程序将输出'Hello World!' 
    */
   def main(args: Array[String]) {
      println("Hello, world!") // 输出 Hello World
   }
}

次に我々はそれをコンパイルするscalacコマンドを使用します。

$ scalac HelloWorld.scala 
$ ls
HelloWorld$.class	HelloWorld.scala
HelloWorld.class	

コンパイルした後、我々は上のJava仮想マシン(JVM)上で実行できるHelloWorld.classをファイルの下に作成されたディレクトリを見ることができます。

コンパイルした後、我々はプログラムを実行するには、次のコマンドを使用することができます。

$ scala HelloWorld
Hello, world!
オンライン例>>

基本的な構文

Scalaの基本的な構文は、次の点に注意してください。

  • 大文字と小文字を区別 - Scalaはハローハローロゴを意味し、Scalaで異なる意味を持っている、大文字と小文字が区別されます。

  • クラス名は -すべてのクラス名の最初の文字を大文字にする必要があります。

    あなたはクラス名を構成するいくつかの単語を使用する必要がある場合は、各単語の最初の文字は大文字。

    例:クラスMyFirstScalaClass

  • メソッド名 -すべてのメソッド小文字の名前の最初の文字。

    いくつかの単語はメソッドの名前を構成するために使用されている場合、各単語の最初の文字を大文字にする必要があります。

    例:デフmyMethodName()

  • ファイル名 -プログラムファイルの名前は正確にオブジェクトの名前と一致する必要があります。

    ファイルを保存するとき、それは(覚えてScalaは大文字と小文字が区別されます)を使用するオブジェクト名を保存し、「.scala「ファイルの拡張子を追加する必要があります。 (ファイル名とオブジェクト名が一致しない場合、プログラムがコンパイルされません)。

    例:のは、「HelloWorldのは、 "オブジェクトの名前であるとしましょう。 次に、ファイルは「HelloWorld.scala」として保存されるべきです

  • デフメイン(引数:配列[文字列 ]) - Scalaのmain()メソッドからのプログラムは、各プログラムのエントリのScalaプログラムの必須部分である、処理を開始します。


識別子

Scalaは識別子、デジタル文字や記号の二つの形式を使用することができます。

英数字の使用は文字で開始したり、文字や数字を続けることができますアンダースコア、Scalaでの記号「$」はまた、文字と見られています。 しかし、識別子を使用して、識別子の先頭に「$」にアプリケーションが予約されているScalaのコンパイラは、競合を避けるために「$」を起動識別子を使用しないようにしてください。

スカラ座とJavaは、toStringなど同様の命名ラクダ、最初の文字を小文字に、使用して命名規則。 最初の文字クラス名または大文字。 加えて、衝突を回避するために、識別子の終わりを強調するために避けるべきです。 シンボル識別子は、1つまたは複数のシンボルを含むよう+、?、などなど。

+ ++ ::: < ?> :->

>を使用したシンボルを表すために$結腸$マイナス$の大きい - 次のようなときにScalaの内部実装、それはエスケープ識別子を使用します。 あなたはJavaコードにアクセスする必要があれば: - >方法を、あなたはScalaの内部名$大腸$マイナス$の大きいを使用する必要があります。

識別子からの混合英数字の識別子は、後に、このような内部実装時間のためのScala unary_ +名+法などの1つまたは複数のシンボルが続きます。 文字列のリテラル識別子が「yield` `X 'example`のために、定義されています。

あなたは、Scalaは)あなたがThread.yieldを(使用することはできませんScalaでScalaの識別子、利回り法のスレッドを使用する典型的な、と解釈されます」との間で任意の有効なScalaの識別子を使用することができます。なぜならスカラの収率キーワードは、あなたは、このメソッドを使用するThread.`yield`()を使用する必要があります。


Scalaのキーワード

次の表は、我々は変数として次のキーワードを使用することはできません、Scalaの予約語を示しています。

抽象的な ケース キャッチ クラス
デフ やります ほかに 拡張します
ファイナル 最終的に 以下のために
forSome もし 暗黙 インポート
怠惰な 試合 新しいです ヌル
オブジェクト オーバーライド パッケージ プライベート
保護されました リターン 密封されました スーパー
この 投げます トレイト 試します
タイプ ヴァル VAR
同時に とともに 収量
- = =>
< - <: <% >:
@

Scalaのコメント

ScalaはJavaは、単一の行のコメントをサポートし、多くのに似ています。 複数行コメントはネストすることができますが、適切に、シンボルを終了するには、対応する記号で始まるコメントを入れ子にする必要があります。 注記Scalaのコンパイラは、次のような例は、無視されます。

object HelloWorld {
   /* 这是一个 Scala 程序
    * 这是一行注释
    * 这里演示了多行注释
    */
   def main(args: Array[String]) {
      // 输出 Hello World
      // 这是一个单行注释
      println("Hello, world!") 
   }
}

空行と空白

スペースやコメントを持つ唯一の1行、Scalaはそれを無視し、それが空行であると思います。 マークは、スペースまたは分割するコメントすることができます。


改行

Scalaは行指向の言語、セミコロン文です(;)終了や改行。 Scalaのプログラムは、ステートメントの末尾にセミコロンは通常、オプションです。 あなたがいずれかを入力して喜んでであるが、文の唯一の1行が存在する場合または書き込みされていない場合。 あなたが行に複数の文を記述する一方、セミコロンが必要とされるようにします。 例えば

val s = "本教程"; println(s)

Scalaのパッケージ

カスタムパッケージ

Scalaのは、2つの方法でパッケージを定義するためにScalaのコードでは、キーワードパッケージのパッケージを使用して定義されます。

ファイルヘッダにパッケージ名を定義するように、第1の方法、およびJavaは、この方法は、新聞に配置されているすべてのコードに従ってください。 例えば:

package com.w3big
class HelloWorld

第二の方法は、次のような、C#にやや似ています。

package com.w3big {
  class HelloWorld 
}

第二の方法は、あなたがファイルに複数のパッケージを定義することができます。

引用

importキーワードの参照パッケージを使用してスカラ。

import java.awt.Color  // 引入Color
 
import java.awt._  // 引入包内所有成员
 
def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent
  ...  // 因为引入了java.awt,所以可以省去前面的部分
}

import文だけではなく、ファイルの最上部に、どこにでも現れることができます。 文ブロックの端まで伸びるからインポート結果。 これは、大幅に名前の競合の可能性を減らすことができます。

あなたはいくつかのメンバーのパッケージを導入したい場合は、セレクタ(ピッカー)を使用することができます。

import java.awt.{Color, Font}
 
// 重命名成员
import java.util.{HashMap => JavaHashMap}
 
// 隐藏成员
import java.util.{HashMap => _, _} // 引入了util包的所有成员,但是HashMap被隐藏了

注:デフォルトでは、Scalaの常に導入java.lang._、scala._とPredef._ ことで、ここでは、パケットのなぜScalaのヘッドを説明することができ、スカラ座を使用する場合には省略されています。