问题标签 [scala]
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 将 Iterator[Option[T]] 转换为 Iterator[T]
我有一个Iterator[Option[T]]
,我想Iterator[T]
为那些Option
s where获得一个T
isDefined
。一定有比这更好的方法:
我原以为在一个构造中是可能的……有人有什么想法吗?
java - Scala 和接口
在Java
我通常会将我的整个域声明为interface
s,可能带有某种Factory
让我实现的方式。这部分是因为我太老了,我记得当一些持久层需要实现类来子类化特定类时,我也可以轻松地:
- 用于测试目的的模拟对象
- 如有必要,在运行时代理对象
- 提供不同的实现
即使我并不真正设想我真的想做上述任何事情,我也会遵循这种做法;我仍然认为这是一种很好的做法,以防万一。我认为这是一种相当普遍的方法。
如果我声明所有域对象,这在 Scala 领域会不会很不寻常abstract
?以上几点也适用于 Scala 吗?
java - Scala 等价于 new HashSet(Collection)
什么是Java等效的 Scala 构造函数(创建一个不可变的) HashSet
c
类型在哪里Collection<? extends T>
?
我在HashSet
Object中只能找到apply
.
scala - Scala 将 Collection 转换为 Map-by-key 的最佳方式?
如果我有一个c
类型的集合T
并且有一个属性p
(例如T
type P
),那么执行map-by-extracting-key的最佳方法是什么?
一种方法如下:
但现在我需要一个可变地图。有没有更好的方法来做到这一点,让它在 1 行,我最终得到一个不可变的地图?(显然我可以将上面的内容变成一个简单的库实用程序,就像在 Java 中一样,但我怀疑在 Scala 中没有必要)
java - 将 Java 集合转换为 Scala 集合
与 Stack Overflow 问题Scala 等效于 new HashSet(Collection)相关,如何将 Java 集合(java.util.List
比如说)转换为 Scala 集合List
?
我实际上是在尝试将 Java API 调用转换为返回 a 的Spring 转换为 Scala immutable 。例如:SimpleJdbcTemplate
java.util.List<T>
HashSet
这似乎有效。欢迎批评!
java - Scala 集合标准实践
来自Java
背景,我习惯于处理集合的常见做法:显然会有例外,但通常代码如下所示:
我不得不承认,我对 Scala 中过多的选项感到有些困惑。有:
scala.List
(和Seq
)scala.collections.Set
(和Map
)scala.collection.immutable.Set
(和Map
,Stack
但不是List
)scala.collection.mutable.Set
(和Map
,Buffer
但不是List
)scala.collection.jcl
所以问题!
- 为什么
List
和Seq
定义在包中scala
而不是scala.collection
(即使实现Seq
在集合子包中)? - 初始化集合然后冻结它的标准机制是什么(在 Java 中是通过包装在 中来实现的
unmodifiable
)? - 为什么某些集合类型(例如
MultiMap
)只定义为可变的?(没有不可变的MultiMap
)?
我已经阅读了 Daniel Spiewak关于 scala 集合的优秀系列,但我仍然对如何在实践中实际使用它们感到困惑。由于强制执行完整的包声明,以下内容似乎有点笨拙:
尽管可以说这比 Java 版本更正确,因为不可变集合不能更改(如在 Java 情况下,可以在unmodifiable
包装器下更改底层集合)
scala - 为什么 Scala 的不可变 Set 在其类型上不是协变的?
编辑:根据原始答案重新编写了这个问题
该类scala.collection.immutable.Set
的类型参数不是协变的。为什么是这样?
scala - 从可迭代对象创建集合时,Scala 是否必须转换为 Seq?
也许我(再次)在错误的树上吠叫,但是如果将属性类型为 a 是正常做法scala.collection.immutable.Set[A]
,那么在给定 a 的情况下,您将如何创建其中的一个scala.Iterable[A]
?例如:
有人可以解释为什么有必要通过 a 创建不可变集Seq
(或者如果不是,那么我该怎么做)?
scala - Scala Map:神秘的语法糖?
我刚刚发现了 scala 的这种语法Map
(在此处以可变形式使用)
现在我不确定这是否是语言中内置的语法糖,或者这里是否发生了更基本的事情,涉及到 map 扩展了PartialFunction
. 谁能解释一下?