Tag: scala

Scala分区/收集使用

是否可以使用一个电话来collect 2个新的名单? 如果没有,我怎样才能使用partition ?

为什么为Java VM编写如此多的新语言?

越来越多的编程语言(Scala,Clojure,…)出现在Java VM中,因此与Java字节码兼容。 我开始问自己:为什么Java VM? 是什么让它变得如此强大或stream行,以至于有了新的编程语言,这些编程语言似乎越来越受欢迎? 为什么他们不为新语言写一个新的虚拟机?

为什么在Scala的标准库中专门有这么几件事?

我已经在Scala 2.8.1的标准库的源代码中search了@specialized的用法。 它看起来只有less数的特征和类使用这个注释: Function0 , Function1 , Function2 , Tuple1 , Tuple2 , Product1 , Product2 , AbstractFunction0 , AbstractFunction1 , AbstractFunction2 。 没有任何集合类是@specialized 。 为什么不? 这会产生太多类吗? 这意味着使用具有原始types的集合类是非常低效的,因为会有大量不必要的装箱和拆箱操作。 什么是最有效的方法来有一个不变的列表或序列(与IndexedSeq特性)的Int ,避免装箱和拆箱?

使用Scala IDE的SBT

从SBT到Scala-IDE的path在很多地方都有很好的描述: 从一个SBT项目开始 添加SBT插件定义:addSbtPlugin(“com.typesafe.sbteclipse”%“sbteclipse-plugin”%“2.1.0-RC1”) 从SBT内运行'eclipse'命令 用安装的Scala-IDE插件打开Eclipse 导入项目 什么是相反的呢? 如果我在Scala-IDE中启动一个新的项目,我可以只添加一个build.sbt文件,并以某种方式告诉Eclipse在运行应用程序时使用它? 道歉,如果这似乎是显而易见的,但我最近从ItelliJ创意转移到Scala-IDE,我不确定设置Scala-IDE使用SBT和我的sbtconfiguration文件。

为什么要避免子types?

我看到很多Scala社区的人build议避免“瘟疫”这样的分类。 什么是反对使用子types的各种原因? 有什么select?

Scala编程语言的目的是什么?

我认为每一种语言都是为特定目的而创造的。 斯卡拉创造了什么,什么问题最好解决?

在Scala中有没有一种通用的方法来记忆?

我想记住这个: def fib(n: Int) = if(n <= 1) 1 else fib(n-1) + fib(n-2) println(fib(100)) // times out 所以我写了这个,这令人惊讶的编译和工作(我感到惊讶,因为fib引用本身的声明): case class Memo[A,B](f: A => B) extends (A => B) { private val cache = mutable.Map.empty[A, B] def apply(x: A) = cache getOrElseUpdate (x, f(x)) } val fib: Memo[Int, BigInt] = Memo { case 0 => 0 […]

Scala中的真实世界函数式编程

SOOOO … 半群,幺半群,单子,函子,镜头,变形,变形,箭……这些都听起来不错,经过一两次(或十次)的练习,你就能掌握它们的本质。 和Scalaz ,你可以免费得到它们。 然而,就现实世界的编程而言,我发现自己正在努力寻找这些概念的用法。 是的,当然,我总是在网上find一些人使用monads IO或斯卡拉镜头,但… …仍然… 我试图find的是某种模式的“规定性”方面的东西。 就像这样:“在这里,你正在试图解决这个问题 ,解决这个问题的一个好办法就是用这种方法来使用镜头!” build议? 更新:按照这两行,有一两本书,会很棒(感谢Paul): Java核心库中的GoFdevise模式示例

运行scala时获取“cat:/ release:没有这样的文件或目录”

我试图通过Homebrew在我的Mac(El Capitan)上安装Scala 2.12.1 ,并从https://www.scala-lang.org/download/下载二进制文件。 在这两种情况下,每当我运行scala (或scalac , scaladoc等),我得到这个打印到屏幕: cat: /release: No such file or directory 行动是成功的,但是。 例如scala myscript.scala工作得很好,但是首先打印出错信息。 有没有人知道为什么发生这种情况?

在实践中,消息传递并发语言如何比共享内存并发语言更好

我一直是一个Java开发人员多年,但直到我开始进行Android开发,从来没有处理太多的并发问题,突然开始发现“应用程序没有响应”和明显的死锁情况。 这让我意识到理解和debugging这些并发问题是多么困难。 Scala和Go等新语言如何提高并发性? 他们如何更容易理解,他们如何防止并发错误? 有人可以提供真实世界的例子,certificate优势?