Scala无法识别要调用的方法

amo*_*fis 14 scala

我想在Scala控制台中运行一些Java.这是我得到的:

scala> String.format("hello %d",3);
<console>:8: error: overloaded method value format with alternatives:
  (java.util.Locale,java.lang.String,<repeated...>[java.lang.Object])java.lang.String <and>
  (java.lang.String,<repeated...>[java.lang.Object])java.lang.String
 cannot be applied to (java.lang.String, Int)
              String.format("hello %d",3);
Run Code Online (Sandbox Code Playgroud)

为什么Scala无法识别调用哪个方法,如果参数集不同,我提供的方法是非常明确的?

奇怪的是,当我尝试使用与两个参数集中的任何一个都不匹配的参数调用函数时,也会出现相同的消息,例如 String.format()

我使用的是scala 2.9.1

Ada*_*man 14

您的参数与函数原型不匹配.你用第二个参数调用函数,scala.Int而不是a java.lang.Object.

转换为它java.lang.Integer,它会工作.

另请参阅Scala中的装箱和拆箱.


dav*_*rez 7

我建议使用Scala 2.10.X中提供的新String插补器.它们更容易使用.

  val x = 3
  String.format("hello %d", x: Integer)
Run Code Online (Sandbox Code Playgroud)

简单地说:

  val x =3 
  s"hello $x"
Run Code Online (Sandbox Code Playgroud)