Scala プログラミング勉強メモ (2)
最近購入した「Scalaプログラミング入門」というご本の勉強メモ。
Hello World!
おなじみの Hello World!
と出力するコード。
println("Hello World!")
scala
コマンドにファイル名を渡してあげることで、実行することができる。
$ scala HelloWorld.scala Hello World!
変数の定義
変数の定義は、var
、val
、lazy val
キーワードを使用する。
var
変数は、一度値を代入した後、別の値を再代入することができる。
var foo: String = "Foo"
val
変数は、一度しか代入できない。また、変数が含まれているコードブロックが実行されたときに評価される。
val bar: String = "Bar"
lazy val
変数は、一度しか代入できない。また、変数にアクセスしたときに評価される。
lazy val baz: String = someLongQuery()
特別な理由がない限り、val 修飾子を使うのがよいそう。
また、Scala の型推論は優秀なのだそうで、変数の型が明白な場合は型の宣言を省略したほうがコードがすっきりする。
var foo2 = "Foo" var bar2 = "Bar"
メソッドの定義と呼び出し
メソッドの定義は def キーワードを使用する。
以下は Hello World!
と出力するプログラムをメソッドを使って実装した例。
def HelloWorld(): String = { "Hello World!" } println(HelloWorld) // => Hello World!
def キーワードに続いて、メソッド名、引数、戻り値の型、= キーワード、メソッド本体を記述する。
HelloWorld メソッドは引数なし、String を返すメソッド。
メソッドの呼び出しは () 内に引数を渡すことで実行できる。
また、引数がない場合は () を省略できる。
HelloWorld メソッドは引数をとらないので、呼び出すときは () を省略できる。
また、メソッドの定義は 1 行で記述することも可能。
def HelloWorld(): String = "Hello World!"
以下は、引数をとるメソッドの例。
() 内に 仮引数: 型名
という形式で記述する。
def foo(a: Int): String = a.toString def bar(a: int, b: Boolean): String = if (b) a.toString else "false"
引数が 1 つのメソッドは、() の代わりにスペース区切りで呼び出すこともできる。
foo(1) // => String = 1 foo 1 // => String = 1