我正在尝试做一些我不确定的事情,这是可能的还是有意义的。
我有一个抽象,用抽象的话说,它在很大程度上取决于对象,以判断要使用给定组件的哪个版本。它是这样的:
object ComponentManager {
def component1Version: ComponentVersion = Component1Version1()
def component2Version: ComponentVersion = Component2Version3()
}
我想在这里实现的是限制ComponentManager
对象中的所有方法,使其符合ComponentVersion
类型。我可以定义一个特征来强制类型,但是我事先不知道我将拥有多少个组件。因此,我可能最终会得到人们向经理对象添加一些东西,例如:
object ComponentManager {
def component1Version: ComponentVersion = Component1Version1()
def component2Version: ComponentVersion = Component2Version3()
def component3Version = objectWithWrongType() // this is the problematic line
}
对于component3Version
,我们有违规对象。它将编译,但是当发生这种情况时,我宁愿出现编译错误,因为我可以通过适当的键入“自由地”进行一些检查。
同样,我不知道管理器将拥有多少个组件,因此我不能真正依靠指定每种方法类型的特征。
我已经了解了F绑定类型/函数/什么,但是仍然无法弄清它们是否是/如何使它们适用于我的问题。
有什么想法吗?我认为“您的克制是没有道理的”也是一个可能的答案,但是无论如何,我想对此有所了解。