Scala 怎么做如下变换:(A,B,C) => (A,(B,C)) (B,(A,C)) (C,(A,B))

2014-11-02 23:32:06 +08:00
 11

(A,B,C) => (A,(B,C)) 这一步好说,直接取 head tail 就可以了。但是取每一个元素都做这个操作怎么搞?

3938 次点击
所在节点    Scala
1 条回复
nil3
2014-11-24 14:36:19 +08:00
scala> val a = Set(1, 2, 3)
a: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

scala> a map (x => Set(x, a diff Set(x)))
res: scala.collection.immutable.Set[scala.collection.immutable.Set[Any]] = Set(Set(1, Set(2, 3)), Set(2, Set(1, 3)), Set(3, Set(1, 2)))

或者

scala> for (x <- a) yield Set(x, a diff Set(x))
res: scala.collection.immutable.Set[scala.collection.immutable.Set[Any]] = Set(Set(1, Set(2, 3)), Set(2, Set(1, 3)), Set(3, Set(1, 2)))

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/143494

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX