1

1 + 2Scala では、 equalsのようにドット表記は多くの場合オプションです1.+(2)

しかし、いくつかの魔法で、次のようなものも書くことも可能ですか?

object u {
  def meth (s: String) = println(s)
  meth "str"  // as shortcut for meth("str")
}

結果:

<console>:3: error: ';' expected but string literal found.

しかし、このようなものが機能する場合、これは内部 DSL を作成するのに非常に興味深いものになるでしょう。: この架空の質問では、u meth "str".

4

1 に答える 1

3

Scala 2.10 の文字列補間を使用して同様のことを行うことができますが、そうすべきではないと思います。

scala> implicit class Meth(val sc: StringContext) extends AnyVal {
     |   def meth(): String = "meth" + sc.parts(0)
     | }
defined class Meth

scala> meth"str"
res0: String = methstr

meth "str"Scalaのような式を使用することはできません。u meth "str"、、またはと書くことはできますが、"str" methと書くことはできません。meth"str"meth ("str")meth "str"

于 2012-12-08T14:14:27.940 に答える