我有*
- 参数方法。我希望能够传递原子和团体的混合物
原子进入方法。理想情况下,我希望这些小组能够举办小组。
语法规则是:
X = (X | atom)*
小组需要订购,但不一定是班级列表。
动机是有许多调用*
- 参数方法,并且这些调用中的一些参数组不止一次出现。我希望能够将这些组存储在val中以重复使用它们。
答案 0 :(得分:4)
为什么不是这样的?
trait GroupOrAtom // or any other nicer name!
class Atom extends GroupOrAtom
class AtomGroup(val atoms: Seq[Atom]) extends GroupOrAtom
def process(elements: GroupOrAtom*) = ...
如果您正在寻找使用联合类型的更实际的方法,请尝试阅读Miles Sabin's amazing post on how to implement union types in Scala。但是,这可能不是您的首选,因为实现像GroupOrAtom
这样的共同特征的解决方案更清晰,更容易。
答案 1 :(得分:1)
传递元组能为你工作吗?
def processor(tokens: Any) = // pattern match on tuples
processor('atom)
processor('atom1, 'atom2)
processor('atom1, ('atom2a, 'atom2b))