Scalaでは、iimplicitキーワードを使って既成のクラスにメソッドを追加することができます。
例えば、Intなどの基本クラスにメソッドを追加したい時などに使用できます。
implicitを使って既成クラスにメソッドを追加する
def main(arts: Array[String]) : Unit = {
// IntにはisZeroメソッドが無いので、暗黙的にExtendIntに変換される
println(0.isZero) // true
}
// 拡張Intクラス
class ExtendInt(val self: Int) {
def isZero: Boolean = self == 0
}
// IntをExtendIntに変換
implicit def extendInt(self :Int): ExtendInt = new ExtendInt(self)
ただし、この記述は以下のようにしてより簡潔にすることができます。
より簡潔な記述
def main(arts: Array[String]) : Unit = {
// IntにはisZeroメソッドが無いので、暗黙的にExtendIntに変換される
println(0.isZero) // true
}
// 拡張Intクラス
implicit class ExtendInt(val self: Int) {
def isZero: Boolean = self == 0
}
現在ではこちらの記述が推奨されています。