9

Scala(2.7.7final)では、Predef.printlnメソッドは次のシグネチャを持つものとして定義されています。

def println (x : Any) : Unit

どうして、次のことが機能するのでしょうか。

scala> println(1,2)  
(1,2)

コンパイラは、コンマで区切られた引数のリストをタプルに自動的に変換しますか?どんな魔法で?ここで暗黙の変換が行われていますか?もしそうなら、どれですか?

4

1 に答える 1

12

はい。適切なマルチ引数メソッドと単一の適切な1引数メソッドがない場合、コンパイラはコンマ区切りの引数をタプルに変換しようとします。これは暗黙の変換ではなく、コンパイラのハックにすぎません。これはやや物議を醸す機能であり、タプルと引数リストの処理を統合する作業が計画されているため、今後変更される可能性があります。

于 2010-08-19T20:57:18.170 に答える