传递一组结构类型的元素

时间:2017-03-21 20:27:06

标签: scala

我有一个功能:

def collapse(relations: Set[Relation] ...

Relation是结构类型

  type Relation = {
    def source: NodeId
    def target: NodeId
  }

我有两个案例类:

case class ViewRelation(id: Option[NodeId],
                        source: NodeId,
                        target: NodeId, ...

case class IndirectRelation(source: NodeId,
                        target: NodeId...

出于实际原因,我不能让它们从同一个特征延伸出来。因此我决定使用结构类型。

我想传递一个val viewRelations = Set[ViewRelation]val indirectRelations: Set[IndirectRelation]作为参数:collapse(viewRelations ++ indirectRelations)。不幸的是,这似乎不起作用。即使只传递viewRelationsindirectRelations也行不通。我终于以这种方式解决了这个问题:

collapse(Set[Relation](relations.toSeq: _*) ++ Set[Relation](indirectRelations.toSeq: _*))

有更好的方法吗?这非常浪费,因为我可以期待相对大量的关系,并且操作需要经常运行。

1 个答案:

答案 0 :(得分:1)

您也可以使用- name: Set the jm_env set_fact: jm_env: "{{lookup('env', 'Environment')}}" - name: Set the l_env set_fact: l_env: "{% if jm_env=='Develop' %}d{% elif jm_env=='Staging'%}s{% else %}p{% endif %}"