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 }
現在ではこちらの記述が推奨されています。