Ruby %{} 是什么意思?

wilikeit · 2018年03月28日 · 最后由 wilikeit 回复于 2018年04月08日 · 5024 次阅读
class A;end
A.class_eval %{
  def self.hi
    puts "hi"
  end
}
A.hi

请问%{是什么意思?

[1] pry(main)> %{I am s atring}
=> "I am s atring"
gaicitadie 回复

一般不是结合%Q,%q 来用吗,直接%{},默认相当于%Q{}吗?

wilikeit 回复

是滴,ruby 的糖很多,你要习惯她的味道

gaicitadie 回复

是啊,ruby 太淘气,糖吃多了,怕会得糖尿病

nouse 回复
name='lucy'
t=%{hi,#{name}!}
puts t  #输出:hi,lucy!,所以%{}相当于%Q的作用吧
t=%q{hi,#{name}!}
puts t  #输出:hi,#{name}!
wilikeit 回复

Ruby 的糖算甜度适中了,你去看看 Perl 的暴雨梨花甜,腻到吐,以至于有些语法写的人自己才知道。

jakit 回复

学过 perl,ruby 的一些功能是从 perl 借鉴的,但 ruby 比 perl 优雅多了,linux 上一般自带 perl,不带 ruby

wilikeit 回复

因为 Perl 比 Ruby 早发展,198x 年的时候就已经 为人们所知所用,而且 Linux 早期团队其中就有 Larry Wall,Ruby 95 年出生 真正被人们所察觉的时候,都已经是 200x 年了。

短的才用%()。另外边界符号也可以自己定,比如

[1] pry(main)> %[b]
=> "b"
[2] pry(main)> %~b~
=> "b"
[3] pry(main)>

典型的几个用途:

  • 同时用到单引号和双引号的情况 %(var a = "I'm OK";)

  • 需要在正则里用斜线的地方 %r(/post/(\d+))

长的一般会改用 heredoc 家族。

msg7086 回复

神奇的符号,确实实用

有个 qref 糖列表,大约 2 页

sevk 回复

能给个网址吗,我很好奇,想学学。

sevk 回复

谢谢,又学到一些糖

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