我們從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,您必須在使用站點進行模式匹配。 –