我刚刚开始使用 Scala。我一直在使用 Python 进行研究编程,并且正在转换一个相当大的(约 4000 行)Python 程序。
几点评论:
我的问题是:
是否有计划为具有默认参数的函数参数添加类型推断?写这样的东西有点烦人:
def add_words(words:Traversable[String], ignoreCase:Boolean=true,
stopwords:Set[String]=Set[String]()) {
...
}
在这种情况下,根本不需要 ignoreCase 和停用词上的类型注释,它们只是增加了不必要的冗长。
感谢参与 Scala 开发的人员的任何评论。
最佳答案
以您的删除问题为例。作为 2.0 的用户,您将有比现在更大的机会来完成它。事实上,兼容性方面的影响几乎可以保证它不会再发生,除非 Java 领先。
此外,您对 4662 的描述实际上是完全错误的。它根本没有被破坏,尽管行为的改变使得可以说不正确的代码再次工作。简而言之,这是 4662:
val source = scala.io.Source.fromFile(new java.io.File("test1.file"))
use(source)
val lines = source.getLines
由于
source
是 Iterator
,一旦使用就消失了。巧合的是,您可以在调用 toString
后重复使用它。就可以了,不是内在保证。 Ceylon 是 promise 摆脱删除并保持与 Java 兼容性的新语言之一。如果 Ceylon 能够做到这一点,并且我坚定地站在怀疑者阵营中,那么 Scala 可以跟进。
此外,在最近对 Java 8 闭包的讨论中,表明有可能对删除做一些事情。如果事实证明这是真的,那么 Scala 也可以兑现。
至于这个问题,我同意可以推断出这些类型。但是,我不确定是否有人使用默认参数做某事——目前的优先事项在别处。
关于斯卡拉 2.9 : plans for type inference of function parameters with default arguments?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7158386/