Scalaの基本構文(1)

■■■ 変数と定数 ■■■

★★ 変数
var 変数名:型 = 初期値
var 変数名 = 初期値
var 変数名1,変数名2 = 初期値
※つまり「型」は省略可。

☆ 実行例
C:\>scala
Welcome to Scala version 2.10.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_40).
Type in expressions to have them evaluated.
Type :help for more information.

scala> var num:Int=10
num: Int = 10

scala> num=20
num: Int = 20

scala> var n1,n2,n3=1
n1: Int = 1
n2: Int = 1
n3: Int = 1

scala>


★★ 定数
val 変数名:型 = 初期値
val 変数名 = 初期値
val 変数名1,変数名2 = 初期値
※ 宣言する形式は変数の場合と同じ。

☆実行例
scala> val message="Hello"
message: String = Hello

scala> message="Scala"
:8: error: reassignment to val
message="Scala"
              ^
scala>
※ 定数に値を代入しようとするとエラーとなる。
※ 関数プログラミングでは valは重要。まずは val で宣言し、うまく行かない場合のみ var を使用する。


★★ 型推論
変数・定数で型を指定しなければ Scalaが型を判断する。


★★ セミコロン(文末)
Scalaでは文末にセミコロンを付けない。(付けても良い)
通常は1行に複数文記述するとき以外はセミコロンは付けない。


★★ 基本データ型
型名説明デフォルト値
Byte8ビット符号付き整数0
Short8ビット符号付き整数0
Int32ビット符号付き整数0
Long64ビット符号付き整数0
Char16ビット符号なしUnicode文字'\0'
StringCharシーケンスnull
Float32ビットIEEE754単精度浮動小数点数0.0
Double64ビットIEEE754単精度浮動小数点数0.0
Booleantrueかfalsefalse

☆デフォルト値とは
デフォルト値は varで変数を宣言したときに「_」(アンダースコア)を指定した場合の値。
宣言した時点で値が定まっていない場合は「_」で取りあえず初期値を設定しておく。
scala> var longNumber:Long = _
longNumber: Long = 0

☆ Scalaの基本データ型はオブジェクト型である
オブジェクト型なので変数や数値に対してもメソッドを呼べる。
scala> var num:Int = 10
num: Int = 10

scala> num.toString
res1: String = 10

scala> 10.toString
res2: String = 10

scala>

☆ 基本データ型のパッケージ
基本データ型の中で、Stringだけは「java.lang」パッケージに属し、それ以外は「scala」パッケージに属する。
Scalaでは、scalaパッケージとjava.langパッケージは自動的にimportされる。


★★ リテラル
☆ 整数リテラル
種類フォーマット
10進数0か0以外の数字に0個以上の数字が続く0、1、765
8進数0の後に1個以上の数字(0~7)が続く011、046
16進数0xの後に1個以上の16進数数値(0~9、A~F、a~f)が続く0xFF、0x3B

☆ 有効な値の範囲
型名最小値最大値
Byte-2^72^7-1
Short-2^152^15-1
Int-2^312^31-1
Long-2^632^63-1
Char02^16-1

☆ 浮動小数点リテラル
・0の後に「.」(ピリオド)が付き、その後に0個以上の数値が続くと "浮動小数点リテラル" となる。
・末尾に「F」か「f」が付くと "Floatリテラル" となる。
・末尾に「D」か「d」が付くと "Doubleリテラル" となる。
・指数形式は「e」または「E」の後に「+」か「-」と1個以上の数値が続く。
scala> var float = 0.1
float: Double = 0.1

scala> var float = 0.1F
float: Float = 0.1

scala> var double = 0.1e+3f
double: Float = 100.0

☆ ブールリテラル
「true」か「false」を代入
scala> var t = true
t: Boolean = true

scala> var f = false
f: Boolean = false

☆ 文字リテラル
・「'」(シングルクォート)で囲まれたUnicode文字かエスケープシーケンス。
・明示的な文字か、「\u」に続いて4個の16進数値を並べたUnicode文字の一般表現。
・「\」に続いて文字のコードポイントを8進数か16進数で表明した値。
scala> val a = 'A'
a: Char = A

scala> val b = '\u0041'
b: Char = A

scala> val c = '\101'
c: Char = A

☆ エスケープシーケンス文字
リテラル意味
\n改行
\r復帰
\tタブ
\bバックスペース
\"ダブルクオート
\'シングルクオート
\\バックスラッシュ
\f改ページ

☆ 文字列リテラル
・「"」(ダブルクォート)で囲む。
・「"""」(ダブルクォート3つ)で文字列を囲むと生の文字列(raw string)を使用可能。
scala> val s = "hello"
s: String = hello

scala> val es = "\"\'\\"
es: String = "'\

scala> val es = """\"\'\\"""
es: String = \"\'\\

☆ シンボルリテラル
・「'」(シングルクォート)を名前の前に付ける。
・例) 「'symbol」というリテラルは「scala.Symbol("symbol")」という式と同じ意味。
・同じ名前を持った2つのシンボルは、同じオブジェクトを示す。そのためマップのキーとして文字列の代わりにSymbolを使う場合がある。
scala> val s = 'sSymbol
s: Symbol = 'sSymbol

scala> s.name
res0: String = sSymbol

0 件のコメント:

その他の記事