scala高級文法のコリー化と暗黙変換(implicit)
961 ワード
コリー化と暗黙変換(implicit)コリー化 scalaにおけるcurringは、通常の方法をコリー化に変換するプロセスであり、1つのパラメータリストの複数のパラメータを複数のリストに変換する.暗黙変換(implicit)
暗黙変換の注意事項:1暗黙パラメータ値はコンテキスト環境から探し、implicit修飾を使用する変数と一致し、メソッドパラメータリストの暗黙タイプと一致して最大1つのみ使用されます.②複数にマッチしている場合は、エラーを報告します.③コンテキストにない場合は、メソッドパラメータリストのデフォルト暗黙値を使用します.④デフォルト値がない場合は、エラーを報告します.⑤1つのパラメータリストには1つのimplicitキーワードしかありません.implicitは最後のリストに配置され、リスト内のすべてのパラメータを修飾します.
ケース:
ここでc,dはいずれもコンテキストから20の値を得る
① def m1(a:Int,b:Int)=a+b
② def m2(a:Int)(b:Int) =a+b
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の値を得る