如何限制Scala对象中所有方法的类型?

问题描述 投票:0回答:1

我正在尝试做一些我不确定的事情,这是可能的还是有意义的。

我有一个抽象,用抽象的话说,它在很大程度上取决于对象,以判断要使用给定组件的哪个版本。它是这样的:

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绑定类型/函数/什么,但是仍然无法弄清它们是否是/如何使它们适用于我的问题。

有什么想法吗?我认为“您的克制是没有道理的”也是一个可能的答案,但是无论如何,我想对此有所了解。

scala types traits
1个回答
1
投票
[某人创建经理时,他们知道他们需要多少组件。
© www.soinside.com 2019 - 2024. All rights reserved.