- val: 変更不可.valueの略.
- var: 変更可.variableの略.
Scalaは型推論してくれる.
型を明示的に宣言したい時は
val msg: String = "Hello, world!"
のようにして宣言できる. 型の宣言は後ろ.
def max(x: Int, y: Int): Int = {
if (x > y) x
else y
}
関数のパラメータ型については,型推論を行わないので,すべての関数パラメータにコロンを挟んで型アノテーションを付けなければならない.
Slacaでは,戻り値の型(戻り型)のことを,結果型(result type)という.
関数が1文だけから構成される場合は,中括弧を省略できる.
def max2(x: Int, y: Int) = if (x > y) x else y
また,何も返さない関数の定義は,
def greet() = println("Hello, world")
インタープリターの結果は,
greet: ()Unit
となる.Unitという結果型は,javaのvoid型のようなもの.
hello.scala
というファイルに
println("Hello, world, from a script!")
と書き込み,scala hello.scala
を実行.
steps
というScala配列の先頭要素には,steps(0)
としてしてアクセスできる.steps[0]
ではない.
println("Hello, " + args(0) + "!")
scala helloarg.scala planet
を実行すると,
Hello, planet!
となる.
var i = 0
while (i < args.length) {
println(args(i))
i += 1
}
scala printargs.scala Scala is fun
を実行すると,
Scala
is
fun
と表示される.
コマンド行引数を1つずつ出力するためのコードは,次のようにも書くことができる.
args.foreach(arg => println(arg))
arg
を関数リテラルという.
型を明示した場合は,
args.foreach((arg: String) => println(arg))
さらに,関数リテラルが1個の引数をとる1文から構成される場合は,
args.foreach(println)
のように略記することもできる.