Пока неявные параметры в Scala выглядят не очень хорошо для меня - они слишком близки к глобальным переменным, однако, поскольку Scala кажется довольно строгим языком, я начинаю сомневаться в своем собственном мнении: -).
Вопрос: Вы могли бы показать реальный (или близкий) хороший пример, когда действительно работают неявные параметры. IOW: что-то более серьезное, чем showPrompt
, что оправдывало бы такой дизайн языка.
Или наоборот - можете ли вы продемонстрировать надежный дизайн языка (может быть мнимым), который не подразумевал бы необходимости. Я думаю, что даже никакой механизм лучше, чем implicits, потому что код более ясный, и нет никаких предположений.
Обратите внимание, что я задаю вопрос о параметрах, а не о неявных функциях (преобразованиях)!
Обновления
Глобальные переменные
Спасибо за отличные ответы. Возможно, я уточню свое возражение против "глобальных переменных". Рассмотрим такую функцию:
max(x : Int,y : Int) : Int
вы называете это
max(5,6);
вы можете (!) сделать это вот так:
max(x:5,y:6);
но в моих глазах implicits
работает вот так:
x = 5;
y = 6;
max()
он не очень отличается от такой конструкции (PHP-like)
max() : Int
{
global x : Int;
global y : Int;
...
}
Ответ Дерека
Это отличный пример, однако, если вы можете думать о гибком использовании отправки сообщения, не используя implicit
, отправьте встречный пример. Мне действительно интересно узнать о чистоте в дизайне языка; -).