【问题标题】:In the Ruby programming language, what is the name of $:在 Ruby 编程语言中,$ 的名称是什么:
【发布时间】:2011-10-03 12:01:36
【问题描述】:

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

: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 实现都支持它吗?
  • 有关于它的文档吗?

【问题讨论】:

    标签: ruby load-path


    【解决方案1】:

    Ruby 有一些预定义的变量

    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

    【讨论】:

      【解决方案2】:
      • $: 全局的规范(英文)名称是 $LOAD_PATH
      • 顾名思义,它是一个库搜索路径数组,即表示解释器将在其中搜索库的所有文件夹的字符串数组(当遇到require "mylibrary" 指令时)
      • 可以像处理全局变量一样谨慎使用它。实际上,它经常在编写包含在 gems 或库中的测试或演示脚本时使用,以便测试修改加载路径以便在安装之前找到被测库(例如$: &lt;&lt; "../lib" 假设该脚本位于lib 的同级中)
      • 所有规范的 Ruby 版本/实现都使用它。请注意,当前目录 . 在 1.8.x 上是 $: 的一部分,并且出于安全原因在 1.9.x 上已被删除。
      • 每个 Ruby 入门(picaxe 书籍、ruby 文档网站)都提供文档。

      【讨论】:

        【解决方案3】:

        相当于$LOAD_PATH。所以我想你可以称之为“加载路径”。谷歌ruby load_path,你会发现很多有用的信息。

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

        【讨论】:

          猜你喜欢
          • 2019-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-22
          • 2014-06-07
          • 1970-01-01
          • 2022-12-10
          • 2020-03-30
          相关资源
          最近更新 更多