Questions tagged «scala»

Scala是一种主要用于Java虚拟机的通用编程语言。它旨在以简洁,优雅和类型安全的方式表达常见的编程模式,它融合了命令式和功能性编程风格。

3
用于定义命名函数的重复语法是否会成为错误的语言设计决策?
我正在为有趣的编程语言建模,并且语法在很大程度上受Scala的影响-特别是函数定义。 我遇到了一个设计问题,因为我的语言无法区分通过def语法定义的函数(类方法)和分配给值的匿名函数(使用创建的值=>)-它消除了实现和行为上的差异。 结果是以下两个定义含义相同: def square(x: Int) = x*x val square = (x: Int) => x*x 没有任何理由在任何正常情况下都使用后一种形式(立即匿名函数赋值)- 可以使用它代替def形式。 具有用于定义命名函数的重复语法是否会损害语言或其他设计方面的正交性? 我更喜欢这种解决方案,因为它允许对方法和命名函数进行简短直观的定义(通过def),以及对匿名函数进行简短定义(使用=>)。 编辑:Scala 确实区分了两者 -匿名函数与defScala中定义的方法不同。不过,差异相对较细微-请参阅我之前链接的帖子。

2
学习Scala,感到灰心[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我来自Java背景,试图学习Scala。目前,我感到非常不知所措,使用Scala似乎需要学习的东西更多,做同样事情的方法也很多。 我想知道是否有人对从何入手提出任何建议,以及他们花多长时间才能感到该语言相当称职? 甚至for循环理解之类的小功能似乎都非常强大,但这只是您需要记住的另一种语法!
9 java  scala 

4
为什么大数据需要发挥作用?
我开始从事与大数据相关的新项目的实习。我的经理们建议开始学习函数式编程(他们强烈推荐Scala)。我使用F#的经验很卑鄙,但是我看不到使用这种编程范例的重要性,因为在某些情况下它很昂贵。 迪恩(Dean)在这个话题上做了有趣的演讲,并在这里分享了他对“大数据”为何的想法:http : //www.youtube.com/watch?v=DFAdLCqDbLQ 但这并不十分方便,因为大数据并不意味着只有Hadoop。 由于BigData是非常模糊的概念。我暂时忘记了。我尝试提出一个简单的示例,以便在处理数据时比较不同方面,以查看功能方式是昂贵的还是没有。如果小数据的功能编程昂贵且占用大量内存,那么为什么大数据需要它? 我远没有花哨的工具,而是尝试使用三种方法针对一个特定且普遍存在的问题构建解决方案:命令式和功能性方法(递归,使用集合)。我比较了时间和复杂性,以比较这三种方法。 我使用Scala编写这些函数,因为它是使用三种范式编写算法的最佳工具 def main(args: Array[String]) { val start = System.currentTimeMillis() // Fibonacci_P val s = Fibonacci_P(400000000) val end = System.currentTimeMillis() println("Functional way: \n the Fibonacci sequence whose values do not exceed four million : %d \n Time : %d ".format(s, end - start)) val …

2
Scala中的自我类型和特质继承有什么区别?
谷歌搜索后,出现了许多有关该主题的回复。但是,我觉得它们中的任何一个都无法很好地说明这两个功能之间的区别。所以我想再尝试一次,特别是... 使用自我类型而不是继承可以做什么,反之亦然? 对我来说,两者之间应该有一些可量化的物理差异,否则它们只是名义上的差异。 如果特征A扩展了B或自类型B,它们是否都说明存在B是必要条件?区别在哪里?

2
我应该使用分号分隔Scala语句吗?
我习惯用Java的分号来分隔语句,所以自然也用Scala代码来完成。我还认为代码更易于阅读,因为很明显一个语句在哪里结束而另一个语句在哪里开始。但是很多时候,当我在SO上发布一段Scala代码时,代码被编辑只是为了删除分号。 是否应该使用分号?是否有任何“官方”准则或编码风格? 是否有需要分号的情况,否则代码不明确?

1
Scala的XML文字有什么问题?
在这篇文章中,马丁(该语言的主要名称)写道: [XML字面量]在当时看来是个好主意,但现在却像拇指酸痛一样突出了。我相信通过新的字符串插值方案,我们将能够将所有XML处理放入库中,这将是一个巨大的胜利。 我自己对语言设计感兴趣,我想知道:他为什么写将XML文字合并到语言中是一个错误?关于此功能的争议是什么?

9
功能开发的操作系统选择[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我主要是.NET开发人员,所以我通常使用Windows / VisualStudio(这意味着:我很受宠),但是我在业余时间喜欢Haskell和其他(大多数是功能性的)语言。 现在,对于Haskell来说,Windows支持是可以的(您可以获取Haskell-Platform),但是latley我试图建立一个基本的Clojure / Scheme环境,这在Windows上很痛苦。 因此,我正在考虑尝试其他操作系统以获得更好的工具和语言支持。当然,这使我有了MacOS或某些Linux发行版。 我以前从未使用过MacOS,当然Linux会便宜(免费),而且我认为我不能在普通的PC硬件上并行引导MacOS(可以吗?)。加:我不知道可以在那些(对我)外国操作系统上使用的工具。 简而言之:我想探索更多Haskell,Clojure,Scala,Scheme,当然至少需要JavaScript / HTML5 / Css的良好工具。对.NET / Mono / F#的支持会很棒,但是为此,我仍将拥有Win7引导程序。 所以我想知道:-您首选的操作系统是什么,发行版(Ubuntu可行吗?)-您使用的是什么Editor / IDE 感谢您的帮助! PS:我不确定这是否是解决此问题的正确地方,但我当然希望如此-如果没有,请告诉我应该将其移至何处(StackOverflow似乎不是正确的地方,恕我直言)

3
功能语言中的获取器和设置器
函数式编程的宗旨之一是使用纯函数。Pure函数是无副作用且参照透明的函数。 Getter并不是透明的-如果在两次Getter的调用之间调用了Setter,则即使Getter的参数没有(通常没有参数),它的返回值也会改变。 设置器会产生副作用-调用设置器通常会操纵不是其返回值的值(实际上,传统上,设置器不返回任何值) 我知道在Scala中,我们可以接受这样一个事实,即我们将两个范例(功能和面向对象)结合在一起,并像使用Java这样的语言时使用了getter / setter。 在像Haskell这样的语言(我不太会流利,但被告知对“纯”功能语言更真实)时,我很好奇,如何对对象的属性建模,以使Getters相对透明和Setters。有副作用吗? 解决方案是将调用设置器的对象的副本作为设置器的返回值传回,并且此副本包含对属性值的更改吗?

5
在基于JVM的语言中是否有明确的领导者?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 这些项目的当前状态如何,有一个(或两个)以明确的领导者身份出现吗? 为了证明我提出这个问题的动机,请回想几年。原型和jQuery与MooTools等其他竞争者并肩生存。快速发展到今天,人们普遍认为jQuery是最好的通用JavaScript库。 在过去的几年中,这些基于JVM的语言发生了类似的事情吗?某些语言是否陷入失修和遗弃?从我阅读的内容来看,Scala似乎已经做好了成为备受喜爱的准备,但是话又说回来,我所阅读的几乎所有内容都已经有好几年了。 我做了更多的研究-我的想法是通过使用Google趋势来查看多年来的搜索量。似乎Jython和JRuby的兴趣相对较小,而Groovy的音量在减小,而Scala的音量是恒定的(在最坏的情况下)或在微小的(最好)在增加。这是准确的评估吗? 是的,我指的是JVM上的非Java语言,例如Jython,JRuby,Groovy,Scala,Clojure等。
9 java  scala  jvm  groovy  jruby 
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.