Ruby $ 开头的全局变量

lidashuang · 2012年07月24日 · 最后由 Victor 回复于 2015年01月14日 · 4000 次阅读

看到一行代码,发现 $: 的用法,

$:.unshift(File.dirname(__FILE__) + '/../lib') 

$: 相当于 $LOAD_PATH
包含一个数组,其内容是 load 或 require 加载文件时用的搜索目录列表.(记忆方法: 冒号是环境变量 PATH 的切分符)

抛砖引玉,谁还有其它的技巧?

不喜欢这种写法,觉得比较恶,还是 $LOAD_PATH 易懂。

http://www.zenspider.com/Languages/Ruby/QuickRef.html#pre-defined-variables pre-defined-variables 数量大于 pre-defined-global-constants

我经常 $:其实是 你 load 过程中查询的目录,真的加载的过程是 $'

经常 $:.push 增加额外的目录写服务器脚本 还有 $1 也经常用,匹配正则的第一个括号()

#5 楼 @Anleb 还有 $2,$3 .... 看到一个例子

str = "http://www.example.co.jp/foo/?name=bar#baz"

%r|^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?| =~ str

puts $1, $2, $3, $4, $5, $6, $7, $8, $9

我原本就是这么记的. 这都是 Matz 从 Perl 里面抄过来的. Matz 自己用的是 Debain, 而 Ruby 也是 linux 下开发出来的. (我怀疑咱社区很多人会以为 Ruby 是苹果下的产物)

#3 楼 @hhuai 倒是没有孰优孰劣, 不过, 从这一点倒是可以看出来 hhui 兄的确是没有 linux 背景的.

$! $@ $1..$9 经常用

unshift 是 array 的用法,unshift/shift 跟 push/pop 一样只不过一个是从左边,一个是在右边。

$:是一个 array,

$ 打头的用的不多,_倒是经常用。

楼上的这些人肯定都没看过《Ruby 基础教程第 4 版》,不然翻翻后面的附录就知道了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册