在Ruby编程语言中,$的名称是什么:

时间:2011-10-03 12:01:37

标签: ruby load-path

我想了解更多关于$:但我不知道怎么称呼。

: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 个答案:

答案 0 :(得分:7)

Ruby有一些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

答案 1 :(得分:5)

  • $:全球的规范(英文)名称为$LOAD_PATH
  • 顾名思义,它是一个库搜索路径数组,即一个字符串数组,表示解释器将在其中搜索库的所有文件夹(当遇到require "mylibrary"指令时)
  • 在处理全局变量时,可以使用相同的注意事项。实际上,它经常在编写gems或库中包含的测试或演示脚本时使用,以便测试修改加载路径以便在安装之前找到测试库 (例如{{1}假设脚本是$: << "../lib"
  • 的兄弟
  • 所有规范的Ruby版本/实现都使用它。请注意,当前目录lib是1.8.x上的$:的一部分,并且出于安全原因已在1.9.x上删除。
  • Docs可用于每个Ruby入门(picaxe book,ruby docs site)。

答案 2 :(得分:3)

相当于$LOAD_PATH。所以我想你可以称之为“加载路径”。 Google ruby load_path,你应该找到很多有用的信息。

Personnaly我更喜欢阅读$LOAD_PATH,但$:是语言的一部分,所以我想可以使用它。