Какие проблемы вызывают предупреждения scala

В моем приложении есть несколько предупреждений о функциях, т.е. "Рефлексивный доступ", "неявное преобразование" и "постфикс-оператор". Это можно устранить, импортировав различные функции scala.language.

Но что это значит? Почему компилятор scala хочет, чтобы я был в явном виде об этом? Компилятор, очевидно, может видеть, что я использую эти функции.

1 ответ

Все эти флаги документированы в объекте scala.language.

Отражающий доступ может иметь удивительную производительность и непригоден для использования в некоторых средах (например, контейнеры со строгой политикой безопасности, или это может вызвать трудности на Android). Так что это должно быть явным.

Поддержка операторов postfix создает неоднозначность при анализе. Я думаю, что долгосрочный план (и я не говорю для Typesafe здесь) заключается в том, чтобы прекратить поддержку операторов postfix в файлах, которые явно не поддерживают эту поддержку. Это обеспечит более последовательный анализ кода, например:

a b
{ ...

где он в настоящее время неоднозначен, является ли b постфиксным оператором или методом, который принимает следующий блок в качестве аргумента.

Некоторые люди считают неявные преобразования запутанными, а некоторые организации запрещают их использование в качестве политики. Наличие явного флага предупреждает читателя, что этот файл содержит неявные преобразования.

Честно говоря, я считаю, что этот шаг мотивирован, по крайней мере частично, политикой - подразумеваемые и двусмысленный синтаксис являются общими точками поверхностной критики scala, но, в частности, для Styleafe, получение одобрения scala "предпринимателями" является одной из главных целей и делает возможным "отключить" некоторые функции могут быть прагматичным шагом к этому. Если вы счастливы использовать эти функции повсеместно, я бы посоветовал просто настроить соответствующие аргументы компилятора (например, -language:implicitConversions).

licensed under cc by-sa 3.0 with attribution.