誰かがあなたが警告を上げる必要があることを言及する必要があります:間違って何もないことを
[email protected]:~$ skala -Ywarn-infer-any
Welcome to Scala version 2.11.0-20130524-174214-08a368770c (OpenJDK 64-Bit Server VM, Java 1.7.0_21).
Type in expressions to have them evaluated.
Type :help for more information.
scala> "abc".padTo(10, "*").mkString
<console>:7: warning: a type was inferred to be `Any`; this may indicate a programming error.
val res0 =
^
res0: String = abc*******
注意(それをこのようにして)。これはあなたのユースケースではありませんので、あなたが冗長であるAPIを使用したい場合は、多分あなたが尋ねるべきで、
scala> case class Ikon(c: Char) { override def toString = c.toString }
defined class Ikon
scala> List(Ikon('#'),Ikon('@'),Ikon('!')).padTo(10, "*").mkString
res1: String = #@!*******
またはより良い
scala> case class Result(i: Int) { override def toString = f"$i%03d" }
defined class Result
scala> List(Result(23),Result(666)).padTo(10, "---").mkString
res4: String = 023666------------------------
:
は多分のためのユースケースがあります危険を伴います。ダニエルの答えが正しいものである理由です
。彼の例の書式文字列がなぜ怖いのかは分かりませんが、読みやすい文字列ではいくつかの場所で文字の書式設定が必要なだけなので、通常はより良性に見えます。
scala> val a,b,c = "xyz"
scala> f"$a is followed by `$b%10s` and $c%.1s remaining"
res6: String = xyz is followed by ` xyz` and x remaining
あなたが偽のフォーマッタを追加するために必要なている一つのケースでは、改行したいときです:
scala> f"$a%s%n$b$c"
res8: String =
xyz
xyzxyz
を私は補間をfを処理すべきだと思う「の%n $ bを$」。ああ、それは2.11で修正されています。
scala> f"$a%n$b" // old
<console>:10: error: illegal conversion character
f"$a%n$b"
scala> f"$a%n$b" // new
res9: String =
xyz
xyz
ここで、実際には補間しない理由はありません。
+1直感+初心者用。 –