На языке программирования Ruby, как называется $:
Я хочу знать больше о $:
но я не как называется.
:015 > $:
=> ["/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1",
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/x86_64-darwin11.1.0",
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby",
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/vendor_ruby/1.9.1",
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin11.1.0",
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/vendor_ruby",
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/1.9.1",
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/1.9.1/x86_64-darwin11.1.0"]
- Как называется это?
- Как и когда это используется?
- Должен ли он использоваться вообще, это хорошая практика или плохая практика?
- Поддерживается ли он всеми реализациями Ruby?
- Есть документы по этому поводу?
3 ответа
Решение
- Каноническое (английское) название
$:
глобальный$LOAD_PATH
, - Как следует из названия, это массив путей поиска в библиотеке, то есть массив строк, представляющих все папки, в которых интерпретатор будет искать библиотеки (когда он встречает
require "mylibrary"
инструкция) - Его можно использовать с той же осторожностью, что и при работе с глобалами. На самом деле, он часто используется при написании тестовых или демонстрационных сценариев, включенных в гемы или библиотеки, так что тест изменяет путь загрузки, чтобы найти тестируемую библиотеку перед ее установкой (например,
$: << "../lib"
если предположить, что сценарий находится вlib
) - Он используется всеми каноническими версиями / реализациями Ruby. Обратите внимание, что текущий каталог
.
был частью $: на 1.8.x и был удален по соображениям безопасности на 1.9.x. - Документы доступны на каждом учебнике по Ruby (книга Picaxe, сайт ruby docs).
Рубин имеет несколько предварительно определенных переменных
Pre-defined variables
$! The exception information message set by 'raise'.
$@ Array of backtrace of the last exception thrown.
$& The string matched by the last successful match.
$` The string to the left of the last successful match.
$' The string to the right of the last successful match.
$+ The highest group matched by the last successful match.
$1 The Nth group of the last successful match. May be > 1.
$~ The information about the last match in the current scope.
$= The flag for case insensitive, nil by default.
$/ The input record separator, newline by default.
$\ The output record separator for the print and IO#write. Default is nil.
$, The output field separator for the print and Array#join.
$; The default separator for String#split.
$. The current input line number of the last file that was read.
$< The virtual concatenation file of the files given on command line (or from $stdin if no files were given).
$> The default output for print, printf. $stdout by default.
$_ The last input line of string by gets or readline.
$0 Contains the name of the script being executed. May be assignable.
$* Command line arguments given for the script sans args.
$$ The process number of the Ruby running this script.
$? The status of the last executed child process.
$: Load path for scripts and binary modules by load or require.
$" The array contains the module names loaded by require.
$DEBUG The status of the -d switch.
$FILENAME Current input file from $<. Same as $<.filename.
$LOAD_PATH The alias to the $:.
$stderr The current standard error output.
$stdin The current standard input.
$stdout The current standard output.
$VERBOSE The verbose flag, which is set by the -v switch.
$-0 The alias to $/.
$-a True if option -a is set. Read-only variable.
$-d The alias to $DEBUG.
$-F The alias to $;.
$-i In in-place-edit mode, this variable holds the extension, otherwise nil.
$-I The alias to $:.
$-l True if option -l is set. Read-only variable.
$-p True if option -p is set. Read-only variable.
$-v The alias to $VERBOSE.
$-w True if option -w is set.
Это эквивалентно $LOAD_PATH
, Я думаю, вы можете назвать это "путь загрузки". Google ruby load_path
и вы должны найти много полезной информации.
Лично я предпочитаю читать $LOAD_PATH
но $:
является частью языка, поэтому я думаю, что это нормально, чтобы использовать его.