Я изучаю scala, и я должен сказать, что это действительно классный язык. Мне особенно нравятся его возможности сопоставления шаблонов и литералы функций, но я исхожу из javascript, рубинового фона и одного из моих любимых шаблонов на этих языках - это ленивый шаблон определения функции и метода. Пример в JavaScript являетсяленивые определения функций в scala
var foo = function() {
var t = new Date();
foo = function() {
return t;
};
return foo();
};
Тем же самый код с небольшими ухищрениями работает в рубине, где вы просто использовать объект одноплодного переопределить метод после того, как вычисление выполняются. Такие вещи действительно очень полезны, когда задействованы дорогостоящие вычисления, и вы не знаете заранее, если вам понадобится результат. Я знаю, что в scala я могу использовать кеш, чтобы имитировать такой же результат, но я стараюсь избегать условных проверок, и до сих пор мои эксперименты дали отрицательные результаты. Кто-нибудь знает, есть ли в scala шаблон ленивой функции или метода?
Примечание: код javascript относится к продукту Peter Michaux's site.
Помните, что если вы действительно не ответили на свой вопрос, вы должны дать один из ответов довольно зеленую галочку! –
+1 для ссылки на чрезвычайно интересную статью на сайте Питера Мишо. :-) –