看了这个 tutorial。上面有两个语法,不是很明白。 https://practicingruby.com/articles/from-scripting-to-oop
r[0][/\A\d{5}\z/] 等效于 r[0] =~ /\A\d{5}\z/ 对吧?一直没有注意到过这个写法。
r[0][/\A\d{5}\z/]
r[0] =~ /\A\d{5}\z/
另外一个是 class << (ChangeLog = Object.new) end 也是对这个语法不明白。
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
#3 楼 @davidhuangdw 非常感谢。
#4 楼 @bwlinux 哈哈,不客气,我也复习了一下!