読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Implicit Conversions

「暗黙」シリーズ二つめ。「implicit」をつけた型変換用関数を定義しおくと、暗黙の型変換が行われるようになります。

  • 型変換は、必要なときに自動的に変換関数が実行されることで行われます。
    • 型変換用の関数は「implicit」をつけて定義しておく必要があります。
  • 使われる変換関数は型にあわせて最適なものが選択されます。
// テスト用のクラス
class Kitten(age:Int, name:String) {
    def getAge = age 
    def getName = name
}
object ImplicitConversionsSample {
  def main(args: Array[String]) {

    // 型変換用関数。「implicit」をつけておく。
    implicit def kittenToString( k:Kitten ):String = {
        println("convert Kitten to String!")
        k.getName
    }   
    implicit def kittenToInt( k:Kitten ):Int = {
        println("convert Kitten to Int!")
        k.getAge
    }   
    
    // Kittenを、Stringを指定するべき場所に指定すると
    // コンテキストで使えるimplicitな関数が実行され、型変換が行われる。
    var s:String = new Kitten(1, "mii")
    println( s )
    
    // Intの場合は、Intを返すようなimplicit関数が選択される。
    var i:Int = new Kitten(1, "mii")
    println( i )
  }
}

実行結果です。

convert Kitten to String!
mii
convert Kitten to Int!
1