我正在尝试编写一个通用的cross函数,该函数将产生两个可迭代对象的笛卡尔积。 这是我的尝试:

      def cross[a, b, A <: Iterable[a], B <: Iterable[b]](a: A, b: B): Iterable[(a, b)] =
        for (i <- a; j <- b) yield (i, j)

但是,签名并不完全正确。 我得到:

Error:(147, 15) inferred type arguments [Nothing,Nothing,List[Int],Array[String]] do not conform to method cross's type parameter bounds [a,b,A <: Iterable[a],B <: Iterable[b]]
  println(cross(List(1, 2, 3), Array("a", "b", "c")))

我想在不同类型的元素上采用2 Iterable是什么?

#1楼 票数:2 已采纳

def cross[A, B](a: Iterable[A], b: Iterable[B]): Iterable[(A, B)] =
            for (i <- a; j <- b) yield (i, j)

  ask by Frank translate from so

未解决问题?本站智能推荐:

1回复

Scala中的广义笛卡尔积函数

我编写了以下笛卡尔乘积函数(在各种类型的元素上可以采用任意数量的Iterable ): 产生例如: 但是我想要这样的东西: 甚至更好: 我将如何“展平”生成的元组? 我尝试了几件事,但推断j的类型为Any ,类型推断似乎迷路了。
2回复

Scala中的笛卡尔积与地图相结合

这是一个后续: 在Scala中将一组字符串扩展为笛卡尔积 你想要的想法是: 并回来: 一般解决方案是: 用法如下: 从理论上讲,应该有一种方法可以输入类型Set[Set[A]]并返回Set[B] 。 也就是说,在组合元素的同时转换类型。 一个示例用法是接受字符串集(如上
5回复

Scala中几个Seqs的懒惰笛卡尔积

我实现了一个简单的方法来生成几个Seq的笛卡尔积,如下所示: 显然,这个很慢,因为它一次计算整个产品。 有人在Scala中为这个问题实现了一个懒惰的解决方案吗? UPD 好的,所以我在笛卡尔积上实现了一个非常愚蠢但是工作的迭代器版本。 在这里发布给未来的爱好者:
1回复

笛卡尔积流scala

我有一个简单的任务来找到最常见的组合,当我们将4个立方体骰子降为最小点时,将其删除。 因此,问题是:是否有任何Scala核心类在Scala中生成笛卡尔乘积流? 如果不是-如何以最简单有效的方式实施它? 这是代码和与Scala中的天真的实现的比较: 提前致谢
2回复

scala爆炸方法笛卡尔积多重数组

尝试解决数据帧内的一些转换,非常感谢任何帮助。 在 Scala(版本 2.3.1)中:我有一个包含字符串和长数组的数据帧。 我希望我的输出像下面的数据框。 我尝试使用爆炸来做到这一点,得到笛卡尔积。 有没有办法将记录数保持为 6 行,而不是 18 行。 这里使用的一些参考 https://intel
1回复

反向笛卡尔积

鉴于以下数据集: 执行反向笛卡尔积以获得: 我目前正在使用scala,我的输入/输出数据类型目前是: 我已经提出了一个解决方案(见下文),但感觉它可以进行优化。 我愿意优化我的方法,以及全新的方法。 scala和c#中的解决方案是首选。 如果可以在MS SQL中完成,我也很好
1回复

Spark-在Scala中根据两个数组的笛卡尔积创建数据框

我有两个数组: 我可以在数组中创建这两个数组的笛卡尔积,如下所示: 输出为: cartesianProd:scala.collection.immutable.IndexedSeq [(String,String)] = Vector((Alice,milk),(Bob,bread
1回复

使用Spark中的键优化笛卡尔积

为了避免计算所有可能的组合,我尝试根据某个键对值进行分组,然后计算每个键的值的笛卡尔积,即: 所需的输出: [(v1, v1), (v1, v2), (v2, v2), (v2, v1), (v3, v3)]这是我尝试执行的代码: 这对于很小的文件来说效果很好,但是当list(Itera