scala功能警告会遇到哪些挑战

时间:2014-12-03 09:26:18

标签: scala

我的应用程序中有许多功能警告,即“反射访问”,“隐式转换”和“后缀运算符”。这可以通过导入各种scala.language功能来修复。

但这是什么意思?为什么scala编译器要我明确这些?编译器显然可以看到我正在使用这些功能。

1 个答案:

答案 0 :(得分:0)

所有这些标志都记录在scala.language对象中。

反射访问可能具有令人惊讶的性能,并且在某些环境中无法使用(例如,具有严格安全策略的容器,或者它可能在Android上造成困难)。因此值得明确。

支持后缀运算符会在解析时产生歧义。我认为长期计划(我不会在这里为Typesafe说话)是停止在不明确启用该支持的文件中支持postfix运算符。这样可以更加一致地解析代码,如:

a b
{
  ...

目前不明确b是后缀运算符还是将后续块作为参数的方法。

有些人发现隐含的转换令人困惑,有些组织禁止将其用作政策问题。有一个显式标志警告读者该文件包含隐式转换。

老实说,我认为这一举动至少部分是出于政治的动机 - 暗示和模糊的语法是表达对scala的批评的共同点 - 但特别是对于Typesafe来说,获得了企业"用户是一个主要目标,并且可以关闭"某些特征可能是迈向这一点的务实步骤。如果您乐于普遍使用这些功能,我建议您只配置相关的编译器参数(例如-language:implicitConversions)。