Наряду с методом, описанным Олегом NSProcessInfo
, вы можете получить доступ к переменным среды, используя стандартную функцию C getenv
, например:
Swift 2.x:
func getEnvironmentVar(name: String) -> String? {
let rawValue = getenv(name)
guard rawValue != nil else { return nil }
return String(UTF8String: rawValue)
}
Swift 3.0:
func getEnvironmentVar(_ name: String) -> String? {
guard let rawValue = getenv(name) else { return nil }
return String(utf8String: rawValue)
}
Также возможно установить переменные среды с помощью функции setenv
:
func setEnvironmentVar(name: String, value: String, overwrite: Bool) {
setenv(name, value, overwrite ? 1 : 0)
}
Причина, по которой я упоминаю способность устанавливать переменные, состоит в том, что это единственный способ установить переменные при работе на игровой площадке Xcode.
Недавно я хотел увидеть обратную линию для странной ошибки CGContext
, которую я получал при работе с «живым» представлением на игровой площадке. По умолчанию backtrace не отображается в консоли, поэтому мне пришлось установить переменную среды CG_CONTEXT_SHOW_BACKTRACE
, чтобы увидеть, что было:
setenv("CG_CONTEXT_SHOW_BACKTRACE", "1", 1)
. После этого было плавное плавание. Ну, кроме ошибки CGContext
, которую я получал, но это тема для другого дня.
Надеюсь, что это поможет!
P.S. Для выполнения указанных функций требуется импортировать модуль Darwin
. Foundation
автоматически импортирует Darwin
, но я думал, что должен упомянуть об этом.
Похоже, что Стальной язык Common LISP банка (SBCL) также угождает тому, что Вы хотите:
http://www.sbcl.org/manual/#Shebang-Scripts
SBCL является и главным уровнем и открытым исходным кодом.
Вы могли также попробовать DrScheme, который, пока не точно автономный интерпретатор, не emacs :)
Это - в основном простой IDE, который имеет область для ввода в коде, который может быть выполнен как файл и затем другая область, которая является рабочим интерпретатором, с которым можно взаимодействовать.
(Кроме того, найдите Беркли UC подкастами CS61A и слушайте их, а также читающий SICP)
Я часто пишу сценарии оболочки шепелявости, которые запускаются с этой строки:
#!/usr/bin/clisp
Затем Вы не должны даже вводить "lispinterpret" на командной строке. Просто отметьте исполняемый файл сценария и выполните его непосредственно.
Если Вы ищете План работать с SICP, смотреть на Схему
Наиболее широко используемый IDE для языка Common LISP, особенно в подмножестве бесплатного программного обеспечения сообщества, на самом деле СЛИЗЬ , который работает на Emacs. Можно использовать любой компилятор CL, Вы предпочитаете и вызываете исходные файлы Lisp путем, Вы описываете, но если Вы сделаете это, то Вы не будете использовать в своих интересах многие из, Шепелявит динамические функции, которые так невероятно полезны при разработке приложения.
я предлагаю, чтобы Вы смотрели на этот демонстрационное видео СЛИЗИ для наблюдения то, что я имею в виду, даже при том, что это могло бы немного устареть в этой точке.
, Если проблема состоит в том, что Вам (думают Вы) не нравится Emacs, я серьезно предлагаю, чтобы Вы попытались изучить это. Серьезно. Нет, действительно, я имею в виду это. Однако существуют альтернативы, такие как IDE, обеспеченные коммерческими реализациями Lisp такой как Allegro и Lispworks (доступные бесплатные демонстрационные версии), или плагин Eclipse, названный Острый выступ .
Никакой "интерпретатор" не требует emacs.
кроме того, emacs может выполнить elisp бездисплейным способом.
@Nathan: у меня есть upmodded ссылки языка Common LISP, потому что Вы спросили о Lisp (особенно со ссылкой на Lisp Emacs). Однако язык Common LISP очень отличается от Схемы. Программа, записанная для, вряд ли будет работать на другом.
, Поскольку Вы упомянули, SICP для изучения Схемы, не Lisp (или по крайней мере, не язык Common LISP и не Emacs Lisp). Существует некоторое перекрытие в принципах, однако Вы не можете просто вырезать и вставить код от SICP и ожидать, что это будет работать на любом языке Common LISP или системе Lisp Emacs. :-)
Кажется, что оболочка схемы подходит для Вашей цели. Смотрите на http://www.scsh.net/index.html
Другой хороший диалект шепелявости cmucl. Они раньше любили хвастать тем, чтобы быть "самой быстрой" шепелявостью.