BBH
-Biz Branding Hub-
投稿日 : 
2020/10/19
更新日 : 
2020/10/19

【Scala】暗黙の型変換(implicit)を使って、クラスにメソッドを追加する

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
}

現在ではこちらの記述が推奨されています。

Profile

管理人プロフィール

都内でITエンジニアをやってます。
変遷:中規模SES→独立系SIer→Webサービス内製開発
使用技術はその時々でバラバラですが、C#、AWSが長いです。
どちらかと言うとバックエンドより開発が多かったです。
顧客との折衝や要件定義、マネジメント(10名弱程度)の経験あり。
最近はJava+SpringBootがメイン。

Recommend