Ruby $ 开头的全局变量

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

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

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

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

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

共收到 11 条回复

不喜欢这种写法,觉得比较恶,还是$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版》,不然翻翻后面的附录就知道了。

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