In the Ruby programming language, what is the name of $:
I want to know more about $:
but I don't how is called.
: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"]
- What is the name of this?
- How and when is it used?
- Should it be used at all, is it a good practice or a bad practice?
- Is it supported by all Ruby implementations?
- Any docs about it?
Ruby have some PRE-DEFINED VARIABLES
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.
http://www.zenspider.com/Languages/Ruby/QuickRef.html
- The canonical (english) name of the
$:
global is$LOAD_PATH
. - As the name says, it is an Array of library search paths, i.e. an array of Strings representing all the folders where the interpreter will search libraries in (when it encounters a
require "mylibrary"
instruction) - It can be used with the same caution that has to be paid when dealing with globals. Actually, it is often used when writing test or demo scripts included in gems or libraries, so that the test modifies the load path in order to find the library under test before installing it (e.g.
$: << "../lib"
assuming the script is in a sibling oflib
) - It is used by all canonical Ruby versions/implementation. Note though that the current directory
.
was part of $: on 1.8.x, and has been removed for security reasons on 1.9.x. - Docs is available on every Ruby primer (picaxe book, ruby docs site).
It's equivalent to $LOAD_PATH
. So I guess you can call it "load path". Google ruby load_path
and you should find lots of usefull information.
Personnaly I prefer to read $LOAD_PATH
but $:
is part of language so I guess it's ok to use it.
精彩评论