Questions tagged «scala»

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

18
Scala 2.8收藏库是否是“历史上最长的自杀记录”的案例?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我刚刚开始研究即将在2.8版本中发布的Scala集合库的重新实现。那些从2.7开始熟悉该库的人会注意到,从使用角度来看,该库变化很小。例如... > List("Paris", "London").map(_.length) res0: List[Int] List(5, 6) ...在任何一个版本中都可以使用。该库非常有用:实际上,它很棒。但是,那些以前不熟悉Scala并四处摸索以了解该语言的人现在必须理解方法签名,例如: def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That 对于这样简单的功能,这是一个令人生畏的签名,我发现自己很难理解。并不是说我认为Scala可能成为下一个Java(或/ C / C ++ / C#)的原因-我不相信它的创建者将其瞄准该市场-但我认为Scala成为/肯定是可行的下一个Ruby或Python(即获得大量商业用户) 这会让人们不去斯卡拉吗? 这是否会使Scala在商业世界中成为坏名声,因为只有专注的博士生才能理解这种学术玩法?被CTO S和软件的负责人会得到吓跑了? 重新设计图书馆是明智的想法吗? 如果您正在商业上使用Scala,您是否对此感到担心?您打算立即采用2.8还是等待观察会发生什么? 史蒂夫·耶格 (Steve Yegge)曾经攻击Scala(在我看来是错误的),因为他认为Scala的字体系统过于复杂。我担心有人会在野外使用此API 散布FUD(类似于Josh Bloch害怕JCP不会在Java中添加闭包)。 注意 - 我应该清楚一点,尽管我相信约书亚·布洛赫(Joshua Bloch)在拒绝BGGA封闭提案方面具有影响力,但除了他诚实地认为该提案代表错误之外,我没有将这归因于其他任何事情。 尽管我的妻子和同事一直在告诉我什么,但我不认为我是个白痴:我在牛津大学获得了很好的数学学位,并且我从事商业编程已有近12年的时间,并且在Scala从事商业编程大约一年(也是商业上)。 请注意,煽动性的标题是对1980年代初期英国政党宣言的引用。这个问题是主观的,但这是一个真实的问题,我已将其定为CW,我希望对此事发表一些意见。

6
Scala vs. Groovy vs. Clojure [关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 有人可以解释一下Scala,Groovy和Clojure之间的主要区别。我知道这些编译器都可以在JVM上运行,但是我想对它们进行简单的比较。

13
时间函数在函数编程中如何存在?
我不得不承认我对函数式编程并不了解。我从这里到那里都读到它,因此知道在函数式编程中,无论调用多少次,函数对于相同的输入都会返回相同的输出。就像数学函数一样,该函数针对函数表达式中涉及的输入参数的相同值求出相同的输出。 例如,考虑一下: f(x,y) = x*x + y; // It is a mathematical function 无论您使用多少次f(10,4),它的价值始终是104。这样,无论您在何处编写f(10,4),都可以将其替换为104,而无需更改整个表达式的值。此属性称为表达式的引用透明性。 由于维基说(链接) 相反,在功能代码中,函数的输出值仅取决于输入到该函数的参数,因此,用参数x的相同值两次调用函数f会两次产生相同的结果f(x)。 函数编程中是否可以存在时间函数(返回当前时间)? 如果是,那么它怎么存在?它不违反功能编程的原理吗?它特别违反了引用透明性,而引用透明性是函数式编程的特性之一(如果我正确理解的话)。 否则,如何知道函数式编程的当前时间?


12
Akka的好用例[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我听说过很多关于Akka框架(Java / Scala服务平台)的赞誉,但是到目前为止,还没有看到很多对用例有用的实际用例。因此,我想听听有关开发人员成功使用它的知识。 仅一个限制:请不要包括编写聊天服务器的情况。(为什么?因为这已被过度用作许多类似事物的示例)

7
下划线在Scala中有什么用?
我查看了scala-lang.org上进行的调查的清单,发现一个奇怪的问题:“ 您能说出“ _”的所有用法吗? ”。你可以吗?如果是,请在这里进行。解释性示例是赞赏的。
540 scala 

1
Scalaz迭代:“提升” EnumeratorT以匹配“ IterateeT”以获得“更大”的单子
如果有EnumeratorT和,IterateeT我可以一起运行它们: val en: EnumeratorT[String, Task] = EnumeratorT.enumList(List("a", "b", "c")) val it: IterateeT[String, Task, Int] = IterateeT.length (it &= en).run : Task[Int] 如果枚举数monad比iteratee monad“更大”,我可以使用up或更广泛地说,Hoist“提升” iterae以匹配: val en: EnumeratorT[String, Task] = ... val it: IterateeT[String, Id, Int] = ... val liftedIt = IterateeT.IterateeTMonadTrans[String].hoist( implicitly[Task |>=| Id]).apply(it) (liftedIt &= en).run: Task[Int] 但是,当iteratee monad比枚举器monad“更大”时,我该怎么办? …

16
Scala的案例类和类之间有什么区别?
我在Google中进行搜索,找到了case class和之间的区别class。每个人都提到,当您要在类上进行模式匹配时,请使用用例类。否则,使用类,还提及一些额外的好处,例如equals和哈希码覆盖。但是,这些是为什么应该使用案例类而不是类的唯一原因吗? 我猜应该在Scala中使用此功能有一些非常重要的原因。有什么解释?是否有资源可以从中学习更多有关Scala案例类的信息?

9
Scala的所有符号运算符是什么意思?
Scala语法有很多符号。由于使用搜索引擎很难找到这类名称,因此将其完整列出会很有帮助。 Scala中的所有符号都是什么,它们每个都做什么? 我特别想知道->,||=,++=,<=,_._,::,和:+=。
402 scala  operators 

2
Scala在哪里寻找隐式?
一个隐含的新人Scala的问题似乎是:在哪里呢编译器找implicits?我的意思是隐含的,因为这个问题似乎从来没有完全形成,就好像没有言语。:-)例如,integral下面的值从哪里来? scala> import scala.math._ import scala.math._ scala> def foo[T](t: T)(implicit integral: Integral[T]) {println(integral)} foo: [T](t: T)(implicit integral: scala.math.Integral[T])Unit scala> foo(0) scala.math.Numeric$IntIsIntegral$@3dbea611 scala> foo(0L) scala.math.Numeric$LongIsIntegral$@48c610af 决定学习第一个问题的答案的另一个问题是,在某些明显的模棱两可的情况下,编译器如何选择要使用的隐式变量(无论如何还是要编译)? 例如,scala.Predef定义了两次转换String:从到WrappedString,再到到StringOps。但是,这两个类共享许多方法,所以为什么Scala在调用时不抱怨歧义map? 注意:这个问题是由另一个问题启发而来的,希望以更笼统的方式说明问题。该示例是从那里复制的,因为答案中已提及该示例。

11
自我类型和特征子类之间有什么区别?
特质的自我类型A: trait B trait A { this: B => } 他说:“ A不能混入既不扩展又不扩展的具体阶级B”。 另一方面,以下内容: trait B trait A extends B 表示“任何(具体的或抽象的)类混合A也将在B中混合”。 这两句话不是同一回事吗?自类型似乎仅用于创建简单的编译时错误。 我想念什么?
387 scala  traits  self-type 


11
如何解决Scala上的类型擦除?或者,为什么我无法获取集合的类型参数?
在Scala上生活的一个可悲的事实是,如果实例化一个List [Int],则可以验证您的实例是一个List,并且可以验证它的任何单个元素是一个Int,而不是它是一个List [可以很容易地验证: scala> List(1,2,3) match { | case l : List[String] => println("A list of strings?!") | case _ => println("Ok") | } warning: there were unchecked warnings; re-run with -unchecked for details A list of strings?! -unchecked选项将责任完全归咎于类型擦除: scala> List(1,2,3) match { | case l : List[String] => println("A …

4
Scala列表串联,::: vs ++
:::和++在Scala中串联列表之间有什么区别吗? scala> List(1,2,3) ++ List(4,5) res0: List[Int] = List(1, 2, 3, 4, 5) scala> List(1,2,3) ::: List(4,5) res1: List[Int] = List(1, 2, 3, 4, 5) scala> res0 == res1 res2: Boolean = true 从文档看来,它看起来++更通用,而它:::是List特定的。是否提供后者是因为它已用于其他功能语言中?

1
Scala:什么是TypeTag?如何使用?
我对TypeTag的了解仅是它们以某种方式取代了Manifests。互联网上的信息稀缺,无法使我对这个主题有很好的了解。 因此,如果有人共享指向TypeTag上一些有用材料的链接(包括示例和流行的用例),我将感到非常高兴。也欢迎提供详细的答案和解释。

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.