var foo;
просто указывает на ячейку памяти foo
. Бывает, что вы уже объявили функцию там, поэтому значение foo
по-прежнему остается функцией.
Это ничем не отличается от того, что ты сделал:
var x = 2;
var x; // We're not setting a value with `=`, so nothing gets overridden
x; // 2
Я не нахожусь на Mac, таким образом, может быть лучший способ сделать это, но первый подход, который приходит на ум, просто выполняет команду оболочки для запросов версии ОС.
http://developer.apple.com/technotes/tn2002/tn2065.html#TNTAG2
http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man1/sw_vers.1.html
На основе этих ссылок Вы, вероятно, хотите сделать что-то как:
set os_version to do shell script "sw_vers -productVersion"
Я не слишком знаком с AppleScript, но AFAIK, можно получить некоторую информацию о версиях от оболочки с командой sw_vers. Например:
Macintosh:~ udekel$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.6
BuildVersion: 9G55
Если можно считать и проанализировать это от appleScript, который может быть решением, хотя я уверен, что должно быть что-то более изящное.
Попробуйте что-то вдоль этих строк:
tell application "Terminal"
activate
set theVersion to do script with command "sw_vers -productVersion"
end tell
Редактирование: было указано, что это действительно открывает терминал, и который, вероятно, не поведение, которое Вы хотите.
Вы также можете получить версию из приложения Finder
tell application "Finder"
set os_version to version
end tell
display dialog os_version
На моем компьютере отображается «10.5.8».