Можно представить следующий перевод для оценки функции (т. Е. Автомобиль не называет макрос или специальный оператор) выражения:
(foo arg1 arg2 ...)
~~~>
(funcall (function foo) arg1 arg2 ...)
И понимать function
как специального оператора, который переводит вещь, которая входит в первый элемент выражения в фактический оператор функции, который можно вызвать. Именно function
преобразует (в основном во время компиляции) лямбда-выражение в замыкание, которое может быть вызвано.
В заключение отметим, что #'foo
является сокращением от (function foo)
.
Это не так, как на самом деле работают, на практике или в спецификации, поскольку (function #'(setf foo))
совершенно допустимо и может вычислять функцию, существующую в одном, но ((setf foo) arg1 arg2 ...)
не может быть допустимым вызовом функции.
Это, однако, объясняет, почему выражение, подобное (#'f x)
, недопустимо, и причина в том, что (function (function f))
не является допустимым выражением.
Ре 5.: Необходимо испытать его. Для ограничения потенциала конфликта, это - очень хорошая идея для активного разработчика часто фиксировать, и для всех других обновлять часто от SVN. Установка почтовых уведомлений о фиксации может помочь много, так, чтобы все люди знали, когда обновить. Но сказавший, что - Вы найдете, что простое действие удаления управления и всех его обработчиков событий или добавления управления и нескольких обработчиков не приведет к конфликтам, которые необходимо разрешить вручную.
Править: Этот ответ DiGi указывает, что Delphi изменяет DFM, даже когда пользователь не сделал. Это не истинный IMO, поскольку простое изменение в метке времени DFM не квалифицирует как локальная модификация файла DFM, и SVN не будет фиксировать нового пересмотра. Нужно однако стараться не переместить формы в Delphi IDE, поскольку это изменит Вершину и / или свойства Left формы. Так же изменение активной страницы управления страницей рассчитало бы как локальная модификация. Прежде, чем фиксировать его - поэтому хорошая идея исследовать все локальные модификации и вернуться все те, которые просто случайны.
Редактирование 2: Как onnodb указанный в его комментарии, кажется, существуют свойства формы, которые действительно изменяются автоматически, по крайней мере, с Delphi 2007 (и вероятно позже?). Это подчеркнуло бы важность проверки всех локальных модификаций перед фиксацией.
Также посмотрите, Как я запускаю с рабочей Подверсии + Delphi? для некоторых инструментов SVN, которые также интегрируют в Delphi IDE.
Да.
TortoiseSVN автоматически отмечает все измененные файлы при управлении версиями, когда Вы фиксируете.
См. 2.
Очень легко создать черный список. Просто щелкните правой кнопкой по файлу, и Вы получаете опцию проигнорировать все файлы того типа файла.
При использовании Visual Studio можно использовать Анк SVN для интеграции IDE.
Файлы DFM не изменяются самостоятельно для меня.
Я не уверен, что другие люди делают в их dfm файлы, или какие настройки в Delphi могли бы вызвать это. У меня нет проблем. Только dfm файлы, которые я изменяю, перечислены (как изменено) в диалоговом окне Фиксации. Я использую Delphi 2007 и Delphi 7.
Я обычно использую этот небольшой сценарий Python прежде, чем обновить от SVN для очистки моего исходного дерева.
Я храню .dof
файлы в SVN, таким образом, я должен фиксировать вручную любого .dof
изменение прежде, чем убрать исходное дерево.
import os
import sys
exts = ['.~pas', '.~dpk', '.~bpl','.dcu', '.~dcu', '.dcp', '.~dcp',
'.dof', '.cfg', '.res', '.~res']
def mydir():
if __name__ == '__main__':
filename = sys.argv[0]
else:
filename = __file__
return os.path.abspath(os.path.dirname(filename))
def clean_dir(arg, dirname, names):
for name in names:
if os.path.splitext(name)[1].lower() in exts:
file2delete = os.path.join(dirname,name)
print os.path.join(file2delete)
os.remove(file2delete)
if __name__=="__main__":
print "Cleaning Tree"
os.path.walk(mydir(), clean_dir, "a")
Разработчики могут использовать CommitMonitor для получения информации о новых фиксациях.
реклама 5: Это плохо, если два или больше разработчика используют тот же .dfm. Простые модификации могут работать (объединяются) прекрасный. важно фиксировать, только если Вы - действительно имевшее значение в файлах. Delphi обычно изменяет .dfm, даже Вы ничего не изменяете.
Вы могли нас SourceConexion. Это integratesin Delphi IDE. Это поддерживает блокировку файлов так, чтобы Вы не заканчивали в проблеме с файлами DFM.
Я использую TortoiseSVN при работе с C#, но в Delpi я нахожу хорошим использовать SC, так как я закончил с поврежденными файлами DFM после того, как более затем один разработчик сделал изменения в них..