在我的 DSL 中,我想要这个功能:
class Test {
val compA = dependant(true, true)(Component("parameters"))
//and this shortcut:
val compB = dependant Component("parameters")
}
在哪里:
def dependant(onEnable: Boolean, onDisable: Boolean)(c: Component): Component = {
//...
}
def dependant(c: Component): Component = dependant(false, true)(c)
一切都很好,但是,我不能使用这种语法:
val compB = dependant Component("parameters")
因为它说
对重载定义的模棱两可的引用,依赖于类 Test 类型(onEnable:Boolean,onDisable:Boolean)(c:Component)组件和依赖于类 Test 类型(c:Component)Component 的方法与预期类型匹配?
但是,如果我将参数括在括号中:
val compB = dependant(Component("parameters"))
错误消失了。显然,编译器无法消除无括号的情况。这是预期的还是我做错了什么?如果这是预期的,那么为什么?我怎样才能恢复使用该方法dependant
作为前缀而不带括号的能力?