Questions tagged «scala»

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

3
Scala中未经检查的异常的决定
作为一名Java程序员,我一直对Unchecked Exception持批评态度。通常,程序员使用它作为编码简便性的途径,只会在以后造成麻烦。此外,与未检查的对等程序相比,具有检查的异常的程序(尽管不整洁)非常健壮。 令人惊讶的是,在Scala中,没有什么叫做“检查的异常”。Scala中所有未选中和未选中的Java都未选中。 做出此决定的动机是什么?对我来说,在使用任何外部代码时都会遇到很多问题。并且,如果偶然地文档很差,则将导致KILL。

4
Scala开发人员如何接受采访[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 Scala程序员如何接受采访?面试官在采访Scala开发人员时会寻找哪些方面?
17 interview  scala 

3
为什么要使用(检查过的)异常之一?
不久之前,我开始使用Scala而不是Java。对我来说,在这些语言之间进行“转换”过程的一部分是学习使用Eithers而不是(checked)Exceptions。我已经用这种方式编码了一段时间,但是最近我开始怀疑这是否真的是更好的方法。 一个主要的优点Either拥有Exception更好的性能; 一个Exception需要建立一个堆栈跟踪和被抛出。据我了解,虽然Exception不是必须的,但构建堆栈跟踪是必需的。 但随后,人们总是可以构建/继承Exceptions的scala.util.control.NoStackTrace,更是这样,我看到很多的情况下,其中的左侧Either实际上是一个Exception(免收性能提升)。 另一个优点Either是编译器安全。Scala编译器不会抱怨未处理Exception的(不同于Java的编译器)。但是,如果我没记错的话,那么这个决定就是用与本主题中讨论的相同的推理来推理的,所以... 在语法方面,我觉得Exception-style更清晰。检查以下代码块(均实现相同的功能): Either 样式: def compute(): Either[String, Int] = { val aEither: Either[String, String] = if (someCondition) Right("good") else Left("bad") val bEithers: Iterable[Either[String, Int]] = someSeq.map { item => if (someCondition(item)) Right(item.toInt) else Left("bad") } for { a <- aEither.right bs <- reduce(bEithers).right ignore <- validate(bs).right …

2
Scala的特征如何避免“钻石错误”?
(注意:出于明显的原因,我在标题中使用了“错误”而不是“问题”。))。 我对Scala的Traits做了一些基础阅读。它们类似于Java或C#中的接口,但是它们确实允许方法的默认实现。 我在想:这难道不会引起“钻石问题”吗?这就是为什么许多语言首先避免多重继承的原因? 如果是这样,Scala如何处理呢?

5
为什么在Java上使用Scala
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我完全沉迷于Scala作为一种语言……但我仍然为为什么任何公司都应该从Java转向Scala而感到困惑。Scala仅仅是在JVM之上的语法糖,还是Scala在Java上有根本的改进,可以改善现实世界的应用程序?
16 java  scala 

4
单元测试静态类型的功能代码
我想问大家,在这种情况下,对以Haskell,scala,ocaml,nemerle,f#或haXe编写的静态类型的功能代码进行单元测试是有意义的(最后一个是我真正感兴趣的,但是我想利用更大社区的知识)。 我问这是因为,根据我的理解: 单元测试的一方面是使规范具有可运行的形式。但是,当采用声明性样式将规范化规范直接映射到语言语义时,实际上是否有可能以可运行的形式以独立方式表达规范,从而增加价值? 单元测试最明显的方面是跟踪无法通过静态分析发现的错误。鉴于类型安全的功能代码是一种非常接近静态分析器所理解的代码的好工具,因此您似乎可以将很多安全性转移到静态分析上。但是,无法涵盖代码中使用x而不是y(都为坐标)之类的简单错误。OTOH在编写测试代码时也可能会出现这样的错误,因此我不确定是否值得这样做。 单元测试确实引入了冗余,这意味着当需求改变时,实现它们的代码和涉及该代码的测试都必须被改变。当然,这种开销大约是恒定的,因此可以说,这并不重要。实际上,在像Ruby这样的语言中,它的确无法与优势相提并论,但是鉴于静态类型的函数式编程涵盖了许多基础单元测试的目的,因此感觉这是一个不变的开销,可以不付出任何代价就可以减少它。 由此推断,在这种编程风格中,单元测试已经过时了。当然,这样的主张只会导致宗教战争,所以让我将其归结为一个简单的问题: 当您使用这种编程风格时,您在什么程度上使用单元测试以及为什么使用(为什么希望代码获得什么质量)?或者反过来说:您是否有标准,可以用来限定静态分析器覆盖的静态类型功能代码单元,因此不需要单元测试范围?

2
在尝试Scala之前需要了解Java吗
我对学习Scala感兴趣。我已经阅读了很多有关它的内容,但是很多人都看重它,因为它有一个对并发性更好的actor模型,它以更好的方式处理xml,解决了头等函数的问题。 我的问题是,您是否需要了解Java才能理解/理解Scala中的工作方式?最好先尝试一下Java然后尝试Scala,还是可以在没有Java背景的情况下启动Scala?
15 java  scala 

2
结构分型的(缺点)
我刚刚看过Daniel Spiewak的演讲,他谈到了结构化类型与Scala的ans Java 标称类型相比的优势。这种差异的一个示例是以下Java代码 public interface Foo { public int length(); } public interface Bar { public int length(); } Foo f = ...; Bar b = f; 当然不会编译哪个,因为Foo和之间的类型兼容性Bar由名称决定。 另一方面,结构类型系统可以声明两种类型相等或兼容,因此,除其他事项外,还可以进行检查的鸭子类型。 现在,我认为我确实了解结构类型系统的大多数优点,但是我想知道它是否不会从以下示例中使类型安全失效 class Foo { class Bar { /* ... */ } def takeBar(b: Bar) = { /* ... */ } …

1
我应该学习哪些Scala开源项目以学习最佳编码实践。
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 您会推荐哪些开放源代码项目供人们学习以学习专业人士如何编写Scala? 我正在寻找的一些属性-尽管并不是每个示例项目都必须具备这些属性: 语言和库的惯用用法 功能编程技术 并发(使用Actor或其他方法) 具有多个模块的大型系统 可读性 Java互操作 等等
15 scala 

2
是否有关于Scala的经典书籍?[关闭]
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我对学习Scala感兴趣,但是由于相对较新,因此似乎找不到很多关于它的书籍。 是否有一本书是事实上的标准,用于描述有关Scala的最佳实践,设计方法和其他有用信息?那本书有什么特别之处?
15 books  scala 

8
您如何鼓励您的组织从Java迁移到Scala?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 是否有人组织开始从Java迁移到Scala?如果是,您该怎么做?我怎样做才能鼓励我的同事也这样做?
15 java  scala  migration 

3
Scala隐式函数的历史渊源
我的许多同事都将Scala称为具有复杂功能的复合体,甚至有人指责它具有所有这些新功能。尽管大多数程序员都知道OO功能,并且至少一些体面的程序员也了解函数式编程,但是特别是在Scala中有一个功能,我不知道它的历史渊源。 鉴于我们专业的主要口头禅是不重新发明轮子,我相当有信心,Scala没有任何实际的闻所未闻的功能,但是如果有必要,我会对此进行纠正。 为了解决实际问题,虽然我知道Scala的大多数功能的由来,但我从未见过类似其implicit声明的内容。是否有其他(较旧的!)语言也提供此功能? 区分隐式的不同情况(因为它们可能源自不同的来源),即隐式转换和隐式参数,是否有意义?


2
为什么不像Haskell那样将Scala Option类型称为Maybe?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 为什么不像Haskell那样将Scala Option类型称为Maybe? 也许对我来说更具“语义意义”,但也许Option具有我所不知道的不同行为。 有什么特殊的原因为什么不将Scala中的Option称为Maybe?

1
Scala作为通用编程语言
在Garcia等人的论文“针对通用编程的语言支持的扩展比较研究”中。给出了通用编程的编程语言功能的有趣比较: 简要解释术语: 任何人都可以在此框架内测试Scala对通用编程的支持吗?即,如果可能的话,在第一张表中添加一列,并附上说明。

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.