Ruby 请教两个基本对语法问题

bwlinux · 2014年12月08日 · 最后由 davidhuangdw 回复于 2014年12月09日 · 1873 次阅读

看了这个 tutorial。上面有两个语法,不是很明白。 https://practicingruby.com/articles/from-scripting-to-oop

r[0][/\A\d{5}\z/] 等效于 r[0] =~ /\A\d{5}\z/ 对吧?一直没有注意到过这个写法。

另外一个是 class << (ChangeLog = Object.new) end 也是对这个语法不明白。

请 DX 帮助我理解一下上面两个问题,哪本书讲到过这两个语法?谢谢。

r[0][/\A\d{5}\z/]
r[0] =~ /\A\d{5}\z/

哪个告诉你这两种等效了……

#1 楼 @messiahxu 我自己猜想的,因为我不理解。

http://www.ruby-doc.org/core-2.1.5/String.html#method-i-5B-5D 可以用问号 pry 查文档: 比如查字符串的[]方法:? ""[]

str[/.../]
#等价于
str =~ /.../ && $&

str[/.../,3]
#等价于
str =~ /.../ && $3

class << ChangeLog
  ...
end
#等价于打开对象的singleton_class
ChangeLog.singleton_class.class_eval do
  ...
end

#4 楼 @bwlinux 哈哈,不客气,我也复习了一下!

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