加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala 2.9:使用默认参数对函数参数进行类型推断的计划?

发布时间:2020-12-16 09:56:27 所属栏目:安全 来源:网络整理
导读:我刚刚开始使用 Scala.我一直在使用 Python进行研究编程,而且我正在转换一个相当大的(~4000行)Python程序. 一些评论: 看起来是参与Scala的最佳时机,因为很多好东西都被添加到了2.8中. 另一方面……我想知道为什么Scala似乎没有一个像样的IO包,为什么这似乎
我刚刚开始使用 Scala.我一直在使用 Python进行研究编程,而且我正在转换一个相当大的(~4000行)Python程序.

一些评论:

>看起来是参与Scala的最佳时机,因为很多好东西都被添加到了2.8中.
>另一方面……我想知道为什么Scala似乎没有一个像样的IO包,为什么这似乎不是一个优先事项.在大多数语言中,IO被认为是最基本的操作之一,并且语言的一部分通常是专门设计的,因此IO运行良好.例如,Python中的IO库似乎是该语言中最古老,最稳定的部分之一(至少在其界面中).然而,两年前的评论说“Source.fromFile()是一个大规模的黑客攻击,等到某某完成新的IO包” – 我认为没有动作完成这个.更糟糕的是,Source.fromFile().getLines() – 其中,黑客与否,是一般广告界面 – 完全被2.9.0.1中的更改??所破坏(见https://issues.scala-lang.org/browse/SI-4662).显然,对于这个最基本的IO接口,根本没有回归测试,这是一个不好的迹象.
>类型擦除非常糟糕,以至于我真的想知道为什么在Scala中做出决定以坚持它.是的,我知道Java有类型擦除,而Scala是在JVM上构建的,但是由此产生的需要添加明确可见的东西像清单,专业化注释等等来解决类型擦除只是闻起来很糟糕…我最终感觉Scala设计师会意识到所有这些的愚蠢,并被迫实现正确的通用类型,此时他们然后会有很多不必要的东西要弃用.

我的问题是:

是否计划使用默认参数为函数参数添加类型推断?写这样的东西有点烦人:

def add_words(words:Traversable[String],ignoreCase:Boolean=true,stopwords:Set[String]=Set[String]()) {
    ...
  }

在这种情况下,根本不需要对ignoreCase和stopwords进行类型注释,它们只是添加了不必要的详细程度.

感谢参与Scala开发的人员提出的任何意见.

解决方法

> Scala已经添加了很长时间的好东西,但随着它越来越受欢迎,它会变得越来越稳定. 2.8之前的人在修改语言方面比现在的人更有影响力 – 因为他们代表了更大比例的用户,并且因为语言更灵活.

以你的擦除问题为例.作为一个2.0用户,你有比现在更大的机会完成任务.事实上,除非Java领先,否则兼容性的影响几乎可以保证它不会再发生.
>您来自脚本语言.脚本语言非常关注I / O,因为这是他们的黄油和面包.对于Scala来说,任何严肃的I / O都只是降级到Java库 – 毕竟,这就是让Scala与Java兼容的重点.

此外,您对4662的描述实际上是完全错误的.虽然行为的改变可以说错误的代码再次起作用,但它根本没有被打破.简而言之,这是4662:

val source = scala.io.Source.fromFile(new java.io.File("test1.file"))
use(source)
val lines = source.getLines

由于source是Iterator,因此一旦你使用它就消失了.巧合的是,你可以在调用toString之后重用它,而不是内在的保证.
>类型擦除并不是那么糟糕.事实上,如果它有很多障碍,它就是糟糕设计的标志 – 你不应该检查什么类型的东西,而是调用它上面的方法并让它自己处理.不是说它有时不烦人,但不是那么糟糕.唉,它是与Java无缝兼容的基本选择,而且它是非常有意识的.我没有看到Scala引领它.

Ceylon是一种承诺消除擦除并与Java保持兼容的新语言.如果锡兰能够做到这一点,而且我坚定地站在怀疑者阵营,那么Scala就可以效仿.

此外,最近关于Java 8闭包的讨论表明可能会对擦除做些什么.如果事实证明是真的,那么Scala也可以兑现.

至于这个问题,我同意可以推断出这些类型.我不确定是否有人在使用默认参数做某事 – 但目前的优先事项还在于其他地方.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读