私はScalaでDSLを構築していますが、そのようなオブジェクトがあります。
object block {
def apply(content: String): String = "{\n" + content + "}\n"
def apply(): String = block("empty block")
}
DSLの後半で、次のように言うことができます。
block {
"good stuff goes here"
}
apply()
それは問題ありませんが、ユーザーが空のブロックを記述できるようにするために使用したい2番目の方法があります。これにより、後でそれらを埋めることができます。しかし、コンパイラーは中括弧を使用して引数なしのメソッドを呼び出すことを許可していませんapply()
...代わりに括弧を使用する以外にそれを回避する方法はありますか?いいえの場合、なぜこれが許可されないのですか?
更新:参考までに:全体像を把握するには、2つの答えを組み合わせる必要があります。