2016-08-23 6 views
1

Мой код: val exitStatus = url #> outfile !Scala Postfix предупреждения оператора противоречит Scaladoc

scala.sys.process: new URL("http://www.scala-lang.org/") #> new File("scala-lang.html") !

Предупреждение:

postfix operator ! should be enabled 
[warn] by making the implicit value scala.language.postfixOps visible. 
[warn] This can be achieved by adding the import clause 'import scala.language.postfixOps' 
[warn] or by setting the compiler option -language:postfixOps. 
[warn] See the Scaladoc for value scala.language.postfixOps for a discussion 
[warn] why the feature should be explicitly enabled. 
[warn]  val exitStatus = url #> outfile ! 
[warn]         ^
[warn] one warning found 

WTF ???

+0

Я бы не сказал, что есть противоречие. Существует неявное использование постфиксной нотации, и, возможно, это должно быть * подчеркнуто * в документации. –

+0

@YuvalItzchakov Точно моя точка. См. Мой комментарий к реакции Алека. –

ответ

5

enter image description here

Сохраняйте спокойствие и следить за предупреждение.

import scala.language.postfixOps 
... 
val exitStatus = url #> outfile ! 
... 

И ... никаких предупреждений! :)

Причина в том, что люди, новые для Scala, не используют их случайно и в конечном итоге более смущены синтаксисом. Я не уверен, что согласен с этим соображением, но, похоже, это работает с моими коллегами/друзьями, поэтому есть что-то для этого.


Как и в сторону here страница Scaladoc что детали все это. Вы также можете включить их как флаги компилятора или через build.sbt.

-language:dynamics    # Allow direct or indirect subclasses of scala.Dynamic 
-language:existential   # Existential types (besides wildcard types) can be written and inferred 
-language:experimental.macros # Allow macro defintion (besides implementation and application) 
-language:higherKinds   # Allow higher-kinded types 
-language:implicitConversions # Allow definition of implicit functions called views 
-language:postfixOps   # Allow postfix operator notation, such as `1 to 10 toList' 
-language:reflectiveCalls  # Allow reflective access to members of structural types 
+0

Я знаю, как избавиться от предупреждения (должно было упоминаться в моем сообщении), но вы можете подумать, что Scaladoc должен упомянуть, что пример, который они использовали, генерирует предупреждение, или компилятор будет умнее. Я приму свой ответ, хотя для сохранения спокойного образа :) –

+0

@AbhijitSarkar Согласен. :) – Alec

+0

В ответ на обновление списка параметров SBT соответствующей строкой в ​​'build.sbt' является' scalacOptions + = "-feature" '. Вот как я получил информацию о предупреждении. –