Tour of Scala

デフォルト引数

Language

Scalaはパラメータのデフォルト値を与えることができ、呼び出す側はこれらのパラメータを省略できます。

def log(message: String, level: String = "INFO") = println(s"$level: $message")

log("System starting")  // prints INFO: System starting
log("User not found", "WARNING")  // prints WARNING: User not found

パラメータlevelはデフォルト値を持つので、省略可能です。最終行では、引数"WARNING"はデフォルト値"INFO"を上書きします。Javaで同じ効果を得るのに、省略可能なパラメータをもつメソッドを複数使ってメソッドのオーバーロードをしたようなものです。しかしながら呼び出す側が引数をひとつ省略すると、以降全ての引数は名前つきにする必要があります。

class Point(val x: Double = 0, val y: Double = 0)

val point1 = new Point(y = 1)

ここでは、y = 1と書かなければなりません。

Scalaで定義したデフォルトパラメータはJavaのコードから呼び出される時はオプショナルではありません。

// Point.scala
class Point(val x: Double = 0, val y: Double = 0)
// Main.java
public class Main {
    public static void main(String[] args) {
        Point point = new Point(1);  // コンパイルされません
    }
}

Contributors to this page: