4

我有 Scala 代码

System.out.println(String.format("%s %6d", "someName", someLong))

和错误:

 overloaded method value format with alternatives:
[error]   (java.util.Locale,java.lang.String,<repeated...>[java.lang.Object])java.lang.String <and>
[error]   (java.lang.String,<repeated...>[java.lang.Object])java.lang.String
[error]  cannot be applied to (java.lang.String, Long, String)
[error]       System.out.println(String.format("%s %6d",  "someName", someLong))

我该如何解决这个问题?

4

2 回答 2

6

为了说明兰德尔的答案。

如果您超过 50 岁,请使用 Randall 的答案,但如果您未满 40 岁或仍然可以穿合身的衬衫,请使用 f-interpolator!生命短暂。

scala> String.format("%s %6d", "someName", someLong: java.lang.Long)
res8: String = someName      5

scala> val someName = "Bob"
someName: String = Bob

scala> f"${someName} ${someLong}%6d"
res10: String = Bob      5
于 2013-07-02T03:02:56.437 回答
2

您尝试的原因不起作用是 Java 代码无法处理 Scala 的AnyVal类型。

相反,使用 Scala 的对应物:

println("%s %6d".format("someName" someLong))

或者,更简洁地说:

printf("%s %6d%n", someName, someLong)
于 2013-07-02T02:21:30.590 回答