Ruby %{} 是什么意思?

wilikeit · March 28, 2018 · Last by wilikeit replied at April 08, 2018 · 5597 hits
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"
Reply to gaicitadie

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

Reply to wilikeit

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

Reply to gaicitadie

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

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

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

Reply to jakit

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

Reply to 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 家族。

Reply to msg7086

神奇的符号,确实实用

有个 qref 糖列表,大约 2 页

Reply to sevk

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

Reply to sevk

谢谢,又学到一些糖

You need to Sign in before reply, if you don't have an account, please Sign up first.