scala高級文法のコリー化と暗黙変換(implicit)

961 ワード

コリー化と暗黙変換(implicit)
  • コリー化
  • scalaにおけるcurringは、通常の方法をコリー化に変換するプロセスであり、1つのパラメータリストの複数のパラメータを複数のリストに変換する.
    ① def m1(a:Int,b:Int)=a+b
    ② def m2(a:Int)(b:Int) =a+b
    
  • 暗黙変換(implicit)
  • object Implicit{
    def main(args:Array[String]):Unit={
     
    implicit val a:Int=10
    def m1(a:Int,b:Int)=a+b
    def m2(a:Int)(implicit b:Int)=a+b
     
    /*def m2(a:Int)(implicit b:Int=1)=a+b*/ //            
    println(m2(5))
    }
    }
    

    暗黙変換の注意事項:1暗黙パラメータ値はコンテキスト環境から探し、implicit修飾を使用する変数と一致し、メソッドパラメータリストの暗黙タイプと一致して最大1つのみ使用されます.②複数にマッチしている場合は、エラーを報告します.③コンテキストにない場合は、メソッドパラメータリストのデフォルト暗黙値を使用します.④デフォルト値がない場合は、エラーを報告します.⑤1つのパラメータリストには1つのimplicitキーワードしかありません.implicitは最後のリストに配置され、リスト内のすべてのパラメータを修飾します.
    def m2(a:Int)(b:Int)(implicit c:Int,d:Int)
    

    ケース:
    implicitval scala:Int=20
     def m3(a:Int)(b:Int)(implicit c:Int,d:Int)=a+b+c+d
    println(m3(5)(5))//    50=5+5+20+20
    

    ここでc,dはいずれもコンテキストから20の値を得る