2014-10-06 125 views
10

有人能解释为什么这样做:红宝石插值

%{#$"} 

在IRB产生以下?

=> "[\"enumerator.so\", \"enc/encdb.so\", \"enc/big5.so\", \"enc/cp949.so\", \"enc/emacs_mule.so\", \"enc/euc_jp.so\", \"enc/euc_kr.so\", \"enc/euc_tw.so\", \"enc/gb2312.so\", \"enc/gb18030.so\", \"enc/gbk.so\", \"enc/iso_8859_1.so\" ... ] 

谢谢!

+0

看起来像“也许要求它返回周围的红宝石安装的所有环境变量(模糊猜测) – Drew 2014-10-06 14:38:35

+1

'$ LOADED_FEATURES == $”' - 参见[ruby/doc/globals.rdoc](https://github.com /ruby/ruby/blob/trunk/doc/globals.rdoc) – Kyle 2014-10-06 14:46:33

+4

Ew,我的Ruby中有一个Perl。 – Max 2014-10-06 15:41:03

回答

25

%{ ... }是一个字符串文字。它类似于"..."

%{a string} == "a string" 
# => true 

#{expr}这些字符串里面就是插值。用表达式expr代替它的值。对于全局变量,您可以省略{}

"#{1 + 2}" 
# => "3" 
%{#$"} == $".to_s 
# => true 

$"one of pre-defined variables:装载的模块名称的数组。

+0

很好解释。 – 2014-10-06 16:44:57