%{}在Ruby中做了什么?

use*_*421 28 ruby

在Matt关于干燥黄瓜测试的帖子中,Aslak建议如下.

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

给定%{我在"用户名"中输入"#{User.first.username}"}

这个%{CONTENT}结构叫做什么?有人会介意在某些文档中引用它吗?我不知道怎么去查找它.

还有关于的东西%Q.这相当于%吗?什么花括号?你能用方括号吗?他们的功能不同吗?

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

jpg*_*eek 19

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

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

%{stuff}
%[stuff]
%?stuff?
Run Code Online (Sandbox Code Playgroud)

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

%{foo='bar with embedded "baz"'}
Run Code Online (Sandbox Code Playgroud)

返回文字字符串:foo ='bar with embedded"baz"'

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

 %i#potato tuna#
Run Code Online (Sandbox Code Playgroud)

返回此符号数组:

[:potato, :tuna]
Run Code Online (Sandbox Code Playgroud)

详细信息如下:Wikibooks


Mic*_*ohl 13

  1. "百分比文字"通常是谷歌一些信息的好方法:

  2. #{} 被称为"字符串插值".

  • 它等同于双引号字符串,除了你不必在内部转义双引号(想想'Given'我在\"username \""`中输入\"#{User.first.username} \". (3认同)

Ste*_*ven 10

#{1+1}被称为String Interpolation.

我和Wikibooks将这些%东西称为"%符号".参考这里.该%符号采取任何分隔符,只要它的非字母数字字符.它也可以采用修饰符(有点像正则表达式如何选择),其中一个有趣的是,你是否允许#{}样式字符串插值(默认情况下也启用).

%然后做一些特别的东西,给那个符号一些不同的,如果对初学者有点神秘,简洁.例如,%w{hello world}返回一个数组['hello','world'].%s{hello}返回一个符号:hello.