我们从Java API获得了Selenium WebElement,但我们创建了Scala类,Element和mixin更具体的特征(例如可点击,可提交等)。在Scala中保留具有返回值的mixin特性
我们的方法是这样的:
toScalaElement(e : WebElement) = {
e.type match {
case Input => new Element(e) with Submittable
case Link => new Element(e) with Clickable
...
case _ => new Element
}
}
返回类型总是元素因为这是根类的所有案件。但是,我们希望在返回时保留mixin特征。
建议您查看Scala的Collections API中的构建器,但我们不确定它与这个特定应用程序的关系。显然,如果有比特性mixins更好的方法,解决方案将被赞赏。
更新:我改变了大小写来匹配子类型而不是字符串,但问题的本质保持不变。
看起来我有点误解了这个问题。如果你这样做,方法类型当然是'元素'没有任何mixin。要使用mixin,您必须在使用站点进行模式匹配。 –