Questions tagged «scala»

Scala是主要针对Java虚拟机的通用编程语言。它旨在以简洁,优雅和类型安全的方式表达常见的编程模式,它融合了命令式和功能性编程风格。它的主要特征是:具有类型推断功能的高级静态类型系统;功能类型;模式匹配; 隐式参数和转换;操作符重载;与Java完全互操作性;并发

10
如何设置SBT的堆大小?
我正在使用SBT 0.12.0。我已经阅读了关于堆栈溢出的其他答案并关注它们,但是它们都没有帮助,例如: 创建ForkRun类-使用sbt期间我没有观察到任何分叉的过程 设置环境变量JAVA_OPTS-已设置,但sbt的进程命令行似乎根本没有使用它。 sbt -J-Xmx2G将参数附加到sbt进程命令行,但是-Xmx1536msbt使用旧值代替附加的参数。 我想念什么吗?在同时进行测试和时,如何设置sbt 0.12的堆大小run?
89 scala  sbt 

3
Scala有一个好的数学/统计资料库吗?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我正在寻找一个用于scala的良好的开源库,用于数学和统计。希望像Apache Math或Colt之类的东西,但是在Scala中实现。 谁能指出我正确的方向?
88 scala  math  statistics 

1
Scala下划线-错误:扩展功能缺少参数类型
我知道对此有很多问题,但是我创建了一个我认为应该有效的简单示例,但仍然没有解决,并且不确定我为什么 val myStrings = new Array[String](3) // do some string initialization // this works myStrings.foreach(println(_)) // ERROR: missing parameter type for expanded function myStrings.foreach(println(_.toString)) 有人可以解释为什么第二条语句不能编译吗?

4
Scala案例类继承
我有一个基于Squeryl的应用程序。我将模型定义为案例类,主要是因为我发现使用复制方法很方便。 我有两个严格相关的模型。字段是相同的,许多操作是相同的,它们将存储在同一数据库表中。但是,有些行为仅在两种情况之一中才有意义,或者在两种情况下都有意义但有所不同。 到现在为止,我只使用了单个case类,带有用于区分模型类型的标志,并且所有基于模型类型不同的方法都以if开头。这很烦人,而且类型安全性不高。 我想做的是考虑祖先案例类中的常见行为和字段,并从中继承两个实际模型。但是,据我所知,从案例类继承在Scala中是不可思议的,并且如果子类本身是案例类(不是我的案例),甚至是禁止的。 从案例类继承时应该注意哪些问题和陷阱?就我而言,这样做有意义吗?

11
弃权弃牌
尽早终止折页的最佳方法是什么?作为一个简化的示例,假设我想对中的数字求和Iterable,但是如果遇到意外的事情(比如说一个奇数),我可能希望终止。这是一个近似值 def sumEvenNumbers(nums: Iterable[Int]): Option[Int] = { nums.foldLeft (Some(0): Option[Int]) { case (Some(s), n) if n % 2 == 0 => Some(s + n) case _ => None } } 但是,此解决方案非常丑陋(例如,如果我执行了.foreach和return,则它会更加清晰明了),最糟糕的是,即使遇到一个非偶数,它也会遍历整个可迭代项。 那么,写出像这样终止的折叠的最佳方法是什么?我应该递归地写这个,还是有一个更被接受的方式?

10
将Java集合转换为Scala集合
与Stack Overflow问题Scala与新的HashSet(Collection)等效,我如何将Java集合(java.util.List例如)转换为Scala集合List? 我实际上是在尝试将Java API调用转换为Spring的 SimpleJdbcTemplate(返回a java.util.List<T>)成不可变的Scala HashSet。因此,例如: val l: java.util.List[String] = javaApi.query( ... ) val s: HashSet[String] = //make a set from l 这似乎有效。欢迎批评! import scala.collection.immutable.Set import scala.collection.jcl.Buffer val s: scala.collection.Set[String] = Set(Buffer(javaApi.query( ... ) ) : _ *)

5
与对FlatMap / Map转换的理解相混淆
我真的似乎不太了解Map和FlatMap。我无法理解的是理解力是对map和flatMap的一系列嵌套调用的序列。以下示例来自Scala中的Functional Programming def bothMatch(pat:String,pat2:String,s:String):Option[Boolean] = for { f <- mkMatcher(pat) g <- mkMatcher(pat2) } yield f(s) && g(s) 转换为 def bothMatch(pat:String,pat2:String,s:String):Option[Boolean] = mkMatcher(pat) flatMap (f => mkMatcher(pat2) map (g => f(s) && g(s))) mkMatcher方法的定义如下: def mkMatcher(pat:String):Option[String => Boolean] = pattern(pat) map (p => (s:String) => p.matcher(s).matches) 图案方法如下: import java.util.regex._ def …

5
更高种类的类型什么时候有用?
我从事F#开发工作已有一段时间了,我喜欢它。但是我知道在F#中不存在的一个流行词是类型较高的类型。我已经阅读了有关高类型类型的材料,我想我理解它们的定义。我只是不确定为什么它们有用。有人可以提供一些示例,说明在Scala或Haskell中哪种类型更高级的类型更容易,而这需要F#中的解决方法?同样对于这些示例,如果没有更高类型的类型(或者在F#中反之亦然),解决方法将是什么?也许我只是很习惯解决它,以至于我没有注意到该功能的缺失。 (我认为)我得到了替代myList |> List.map f或myList |> Seq.map f |> Seq.toList更高种类的类型,使您可以简单地编写myList |> map f并返回List。很好(假设是正确的),但是看起来有点小?(难道不能简单地通过允许函数重载来完成吗?)我通常Seq无论如何都会转换为,然后我可以转换为以后想要的任何东西。再说一次,也许我只是太习惯了。但是,有没有在那里,kinded更高类型的任何例子真的可以节省你无论是在击键或类型安全?

2
Reader Monad用于依赖性注入:多个依赖性,嵌套调用
当被问及Scala中的依赖注入时,有很多答案指向使用Reader Monad,要么是Scalaz的,要么是自己滚动的。有很多非常清晰的文章描述了该方法的基础(例如Runar的演讲,Jason的博客),但是我没有找到一个更完整的示例,而且我看不到该方法相对于其他方法的优势。传统的“手动” DI(请参阅我编写的指南)。我很可能错过了一些重要的观点,因此提出了问题。 举例来说,假设我们有以下类: trait Datastore { def runQuery(query: String): List[String] } trait EmailServer { def sendEmail(to: String, content: String): Unit } class FindUsers(datastore: Datastore) { def inactive(): Unit = () } class UserReminder(findUser: FindUsers, emailServer: EmailServer) { def emailInactive(): Unit = () } class CustomerRelations(userReminder: UserReminder) { def retainUsers(): …


13
将Scala列表转换为元组?
如何将具有(例如)3个元素的列表转换为大小为3的元组? 例如,假设我有val x = List(1, 2, 3),我想将其转换为(1, 2, 3)。我怎样才能做到这一点?
87 list  scala  tuples 


3
参数:_ *在Scala中是什么意思?
作为Scala(2.9.1)的新手,我有个,List[Event]并且想要将其复制到Queue[Event],但是以下语法生成了a Queue[List[Event]]: val eventQueue = Queue(events) 由于某些原因,以下工作原理: val eventQueue = Queue(events : _*) 但是我想了解它的作用,以及为什么起作用?我已经看过Queue.apply函数的签名: def apply[A](elems: A*) 我知道为什么第一次尝试不起作用,但是第二次尝试是什么意思?什么是:,_*在这种情况下,为什么apply函数不只取一个Iterable[A]?

8
如何等待几个期货?
假设我有几个期货,需要等到其中任何一个失败或全部成功。 例如:让我们有3个期货:f1,f2,f3。 如果f1成功f2失败,我就不会等待f3(并将失败返回给客户端)。 如果f2在运行期间失败f1并且f3仍在运行,则不要等待它们(并返回failure) 如果f1成功,然后f2成功,我继续等待f3。 您将如何实施?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.