То, что происходит, - то, что переменная, я получен, и функции, возвращает значение, это связывается с тем, в то время, когда это называют. На функциональных языках никогда не возникает этот вид ситуации, поскольку я не был бы восстановлением. Однако с Python, и также как Вы видели с шепелявостью, это больше не верно.
различие с Вашим примером схемы относится к семантике, действительно циклично выполняются. Схема эффективно создает новое я переменная каждый раз через цикл, вместо того, чтобы снова использовать существующее я связывающий как с другими языками. Если Вы будете использовать различную переменную, созданную внешний к циклу, и видоизменять его, Вы будете видеть то же поведение в схеме. Попытайтесь заменить свой цикл:
(let ((ii 1)) (
(do ((i 1 (+ 1 i)))
((>= i 4))
(set! flist
(cons (lambda (x) (* ii x)) flist))
(set! ii i))
))
Смотрят здесь для некоторого дальнейшего обсуждения этого.
[Редактирование] Возможно лучший способ описать его состоит в том, чтобы думать, действительно циклично выполняются как макрос, который выполняет следующие шаги:
т.е. эквивалент ниже Python:
flist = []
def loop_body(i): # extract body of the for loop to function
def func(x): return x*i
flist.append(func)
map(loop_body, xrange(3)) # for i in xrange(3): body
я больше не является тем от родительского объема, но совершенно новой переменной в ее собственном объеме (т.е. параметр к лямбде) и таким образом, Вы получаете поведение, которое Вы наблюдаете. Python не имеет этого неявного нового объема, таким образом, тело для цикла просто совместно использует меня переменная.
Одна веская причина - сжатие резервных копий в SQL 2008. SQL 2008 имеет 3 варианта резервного копирования:
В SQL 2008 есть 3 варианта при резервном копировании баз данных, это:
Резервное копирование SQL 2008 со сжатием обычно выполняется быстрее, чем резервное копирование SQL 2005 без сжатия (меньше ввода-вывода файла со сжатым файлом)
Редактировать: Мы уже некоторое время используем SQL 2008 и проблем не было. Фактически, работа с новыми функциями в SQL Management Studio (такими как intellisense) упростила некоторые задачи.
Что касается новых функций, я должен указать новые пространственные типы данных , геометрия и география, которые в основном позволяют добавлять фактические точки долготы / широты и даже более холодные, привязывают эти точки к геометрии.
т.е. представьте карту с почтовыми индексами, география которых представляет центр почтового индекса, а геометрия - крышки с почтовым индексом. Затем вы можете использовать встроенную новую функцию sql server, чтобы определить, например, есть ли в нем клиент.
Edit PS вот ссылка на серию статей, описывающих преимущества / новые возможности:
Я бы обновился до 2008, потому что:
Я также спросил бы, почему вы так делаете. беспокоитесь о поездке в 2008 год? Если вы выполняете обновление сегодня, зачем переходить на продукт, которому 4 года, а не на последний?
Мы используем его около 3 месяцев, и он кажется довольно стабильным. Мы также обновились с 2000 года, и это было довольно безболезненно. Одна вещь, которую я заметил, - это новый оператор MERGE, который является хорошим способом выполнения апсертов.
Я ткнул в 2008 год немного, но пока не использовал его "по-настоящему". Могу предложить только некоторые основные моменты.
Он «готов к использованию». SQL Server был полностью жизнеспособным продуктом, по крайней мере, с версии 7.0. Если бы он был глючным, дрянным или вообще бесполезным, его конкуренты (все, кто не является Microsoft) к настоящему времени ясно дали бы это всем.
Это новая версия, она будет поддерживаться MS дольше.
Много новых и модных наворотов. Однако это всего лишь навороты, они на самом деле не так много добавляют к "основной" функциональности базы данных.
Есть некоторые серьезные дополнения, в частности, различные новые типы данных даты и времени. (И если каждый получит что-то вроде Oracle ' s grid computing, тогда я буду очень впечатлен.)
В общем, я считаю, что это «вы покупаете лицензию 2008 года, вы можете использовать 2005 или 2008, на ваш выбор». Поэтому лучше использовать последнюю версию.