Здравствуйте, Gaperton, Вы писали:
E>>Умный термин "замыкания лексического контекста". Даже не знаю о чем это.
G>Определенно, это становится модным — не знать основных терминов, принятых в языках программирования.
Да, воинствующая безграмотность. Не знаниями, а нахрапом.
Методом brute force много чего достичь можно
Я проиронизировал по поводу термина, потому что, имхо, его можно было проинтерпритировать несколькими способами:
-- что будет доступно lambda из контекста вызывающий функции;
-- что будет доступно внутри lambda и будут ли сохраняться эти значения от вызова к вызову;
-- какое влияние выход из lambda будет оказывать на вызывающий контекст.
G>Об этом теперь принято заявлять с гордостью, вместо того, чтобы потратить 5 минут на чтение википедии. Так, штоли?
Это про вот это:
http://en.wikipedia.org/wiki/Lexical_closure ?
А почему ты думаешь, что я не читал?
Кстати, в Ruby с этим довольно хитро дело обстоять может:
Re[5]: Следующий язык программированияАвтор: eao197
Дата: 26.09.05
E>>Разница в том, как отрабатывает оператор break внутри обычного (raw) code block и внутри lambda. Тонкое различие, но его незнание может дорого обойтись.
G>Если бы вы знали, что такое лямбда-функции и лексические замыкания (lexical closures), то это различие не показалось бы вам "тонким" даже при первом чтении мануала по языку.
Возможно.
Тогда, вероятно, легко предугадать результаты работы в следующем примере:
def test_block &b
b.call "a", "b"
puts "done"
end
def test_lambda l
l.call "a", "b"
puts "done"
end
test_block { |x,y| puts x + y; break }
test_lambda Proc.new { |x,y| puts x + y; break }
test_lambda lambda { |x,y| puts x + y; break }
Прав был VladD2, на "вы" здесь переходят только при выяснении отношений.
G>Возвращаясь к нашим автомобильным аналогиям — это примерно то же самое, что перепутать бензобак с расширительным бачком системы охлаждения. Незнание тонкого различия между ними тоже может дорого обойтись.
А я не автомобилист, эта аналогия мне ровно ничего не сказала

... << RSDN@Home 1.1.4 stable rev. 510>>