问题标签 [scala-collections]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala 集合不一致
为什么 Scala Collections API 中的 Set 和 List 之间缺乏一致性?
例如,有不可变的 Set,但也有可变的。如果我想使用后者,我可以简单地这样做:
但是,本身没有可变列表。如果我想使用 Lists 编写类似的代码片段,使用哪种数据结构?LinkedList 听起来不错,因为它是可变的,但没有定义 += 方法。ListBuffer 似乎满足要求,但它不是一个列表。
阅读 2.8 Collections 文档后,我得出结论 MutableList 可能是最合适的。
我仍然以某种方式希望有 scala.collection.mutable.List。
scala - 实现一个 scala 集合,以便映射、过滤器等生成正确的类型
我正在尝试实现一个默认值 map,我希望过滤器、映射等在 a上也尽可能DefaultingMap
产生 a 。DefaultingMap
这是我的初始实现:
DefaultingMap
我在使用时得到类型的对象filter
,但在使用时没有map
:
这两种方法之间的区别似乎是map
需要一个隐含的CanBuildFrom
. 所以我认为我需要有一个implicit def
地方来提供CanBuildFrom
. 我的第一个直觉是做 HashMap 中所做的事情:
我相信这会让它编译,但这种方法不起作用,因为不可能定义empty
方法 - 你需要知道defaultValue
应该是什么。如果我可以CanBuildFrom
在类本身中定义,而不是伴随对象,我会没事的,因为defaultValue
那里是可用的。
我怎样才能让它工作?
design-patterns - 在 Scala 中为经常遇到的问题建立了哪些常见的模式/解决方案
我将开始滚动。
给定一系列元素,其中一些元素可以包含多次,一个典型的要求是对它们进行计数 - 以计数或直方图的形式。
经常引用的解决方案是:
那么对于 Scala 中类似的常见问题,还有哪些其他解决方案呢?
scala - 扩展集合时的Scala返回类型
如果我写
类事物扩展了 scala.collection.immutable.HashSet[Int]
新事物 + 5
然后结果是
res0: scala.collection.immutable.HashSet[Int] = Set(5)
我需要做什么才能使结果类型为Things?我怀疑答案可能就在这里,但我很难理解发生了什么。
scala - 我如何反思性地创建一个新系列?
我有一个要在外部存储然后恢复为原始集合类型的集合实例。例如
我“序列化”出 f,我想反思性地创建一个新的 Foo,f2,并用正确的结果填充 f2.x。
我可以通过做创建新的 Foo classOf[Foo].newInstance
,但是我如何创建正确的集合类型并填充它?
请注意,我在这里做了很多假设,值得注意的是:1)我知道 fx 的类型,我什至可以序列化那个类型 2)我将 x 的内容序列化为保留值 3 ) 我不想使用任何“标准”序列化
我尝试使用原始集合中可用的构建器,但我不太明白它是如何工作的,足以将其完成。
谢谢,
戴夫
scala - 如何访问和更新地图的可变地图中的值
我有一个三级数据结构(缩进和换行以提高可读性):
访问最里面的数据(分数)需要大量输入:
有没有更简洁的方法来修改 score 的值?
我是 Scala 新手,因此也欢迎对上述代码的所有其他观察。
arrays - Scala:迭代集合和填充数组的最佳方法
scala noob在这里,我有一个xml节点的集合(Seq),我想根据每个节点填充一个数组:
虽然它有效,但对我来说看起来并不“scala-ish”,我相信有更好的方法来做到这一点..有什么
想法吗?
scala - 将额外参数传递给 foldRight
有没有办法将一些额外的参数传递给提供给 Scala 的 List.foldRight 的函数?
一些示例代码:
我感兴趣的对象是actor
,但是在用于构造 Supervise 时是不可见的。
PS:我对 Scala 很陌生,所以如果这是一个常见问题,请接受我的道歉(尽管广泛的谷歌搜索没有任何适用的命中)。
arrays - 递归地将 Map[Int, Map[Int, X]] 转换为 Array[Array[X]]
我正在尝试编写一个函数,将带有整数键的 Maps 转换为相应的数组。我已经完成了基本案例,但我正在尝试编写递归案例(即多维数组:将 Map[Int, Map[Int, X]] 转换为 Array[Array[X]])。
这项任务的产生是因为需要在不知道数组有多大的情况下从流中构造一个数组,从而允许元素以随机顺序从流中脱落,以及重复元素从流中脱落的可能性。
我有一个功能:
请注意,我知道如果地图包含密钥 k 但不包含密钥 i 其中 0 <= i < k,则代码将失败。这对我的目的来说是可以的。
现在我希望对任意深度的多维数组做同样的事情。例如,将 Map[Int, Map[Int, X]] 转换为 Array[Array[X]]。不幸的是,我被这些类型绊倒了。使用上述作为基本案例,这是我目前所拥有的:
这是我得到的错误:
'=>' 预期但 'forSome' 找到。
由于这是一项教育追求,因此非常感谢任何反馈。具体来说,我将不胜感激任何对我看起来很像 java 的代码的代码批评、做同样事情的现有 scala 函数,或者对构建这些数组的替代方法的建议。