代码之家  ›  专栏  ›  技术社区  ›  lindelof

在scala中,“println(1,2)”如何工作?

  •  9
  • lindelof  · 技术社区  · 14 年前

    在scala(2.7.7决赛)中, Predef.println 方法定义为具有以下签名:

    def println (x : Any) : Unit
    

    怎么会这样呢,那么下面的工作:

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

    编译器是否自动将以逗号分隔的参数列表转换为元组?用什么魔法?这里是否正在进行隐式转换,如果是,则是哪个转换?

    1 回复  |  直到 14 年前
        1
  •  11
  •   Dave Griffith    14 年前

    是的,如果没有合适的多参数方法和单个合适的单参数方法,编译器将尝试将逗号分隔的参数转换为元组。这不是一个隐式转换,只是一个编译器黑客。这是一个有争议的特性,可能会在未来发生变化,因为计划围绕统一元组和参数列表的处理进行工作。