%{}在Ruby中做了什么?

时间:2011-03-14 19:54:47

标签: ruby

在Matt的帖子中关于drying up cucumber testsAslak suggests以下内容。

  

当我有很多报价时,我更喜欢这个:

     

给出%{我在“用户名”}中输入“#{User.first.username}”

调用的%{CONTENT}构造是什么?有人会介意在某些文档中引用它吗?我不知道怎么去查找它。

还有关于%Q的内容。这仅相当于%吗?什么花括号?你能用方括号吗?它们的功能有何不同?

最后,#{<ruby stuff to be evaluated>}构造被称为什么?在某个地方的文档中是否也提到了这一点?

3 个答案:

答案 0 :(得分:13)

  1. “百分比文字”通常是谷歌搜索信息的好方法:

  2. #{}被称为“字符串插值”。

答案 1 :(得分:11)

其他答案都没有实际回答这个问题。

这是百分号表示法。百分号表示下一个字符是文字​​分隔符,您可以使用所需的任何(非字母数字)字符。例如:

%{stuff}
%[stuff]
%?stuff?

等。这允许您将双引号,单引号等放入字符串而不转义:

%{foo='bar with embedded "baz"'}

返回文字字符串: foo =&#39;带有嵌入&#34; baz&#34;&#39;

的栏

百分号后面可以跟一个字母修饰符来确定字符串的插值方式。例如,%Q[ ]是插值字符串,%q[ ]是非插值字符串,%i[ ]是非插值符号数组等。例如:

 %i#potato tuna#

返回符号数组:

[:potato, :tuna]

详细信息如下:Wikibooks

答案 2 :(得分:9)

#{1+1}被称为String Interpolation

我和Wikibooks将%内容称为“%notation”。 Reference here%表示法采用任何分隔符,只要它不是字母数字。它也可以采用修饰符(有点像正则表达式如何选择),其中一个有趣的是,你是否允许#{} - 样式字符串插值(这也是默认启用)。

%然后对它做了一些特别的事情,给这个符号一些明显的,如果对初学者有点神秘,简洁。例如,%w{hello world}返回数组['hello','world']%s{hello}会返回符号:hello