我有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))
我该如何解决这个问题?
答案 0 :(得分:6)
说明兰德尔的答案。
如果你超过五十岁,请使用Randall的答案,但如果你不到四十岁或仍然可以穿合身的衬衫,请使用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
答案 1 :(得分:2)
您尝试的不起作用的原因是Java代码无法处理Scala的AnyVal
类型。
相反,请使用Scala的对应部分:
println("%s %6d".format("someName" someLong))
或者,更简洁:
printf("%s %6d%n", someName, someLong)