使用 lambdas 扩展
如果你有:
operator fun <R> String.invoke(block: () -> R) = {
try { block.invoke() }
catch (e: AssertException) { System.err.println("$this\n${e.message}") }
}
你可以编写以下类似 DSL 的代码:
"it should return 2" {
parse("1 + 1").buildAST().evaluate() shouldBe 2
}
如果你对上面的 shouldBe
感到困惑,请参阅示例 Infix approach to build DSL
。