我有一个属性数组如下,
attributes = ["test,2011","photo","198.1 x 198.1 cm","Photo: Manu PK Full Screen"]
当我这样做时,
artist = attributes[-1].gsub("Photo:") p artist
我在终端获得以下输出
#<Enumerator: "Photo: Manu PK Full Screen":gsub("Photo:")>
编辑:
请注意,而不是属性[-1] .gsub(“Photo:”,“”),我正在做属性[-1] .gsub(“Photo:”)所以想知道为什么枚举器对象已经返回(我期待一条错误信息)以及发生了什么.
Ruby – 1.9.2
Rails – 3.0.7
解决方法
Enumerator
对象提供了枚举常用的一些方法 – next,each,each_with_index,rewind等.
你在这里获得了Enumerator对象,因为gsub
非常灵活:
gsub(pattern,replacement) → new_str gsub(pattern,hash) → new_str gsub(pattern) {|match| block } → new_str gsub(pattern) → enumerator
在前三种情况下,替换可以立即进行,并返回一个新字符串.但是,如果您不提供替换字符串,替换哈希或替换块,则会返回Enumerator对象,该对象允许您访问匹配的字符串片段以便以后使用:
irb(main):022:0> s="one two three four one" => "one two three four one" irb(main):023:0> enum = s.gsub("one") => #<Enumerable::Enumerator:0x7f39a4754ab0> irb(main):024:0> enum.each_with_index {|e,i| puts "#{i}: #{e}"} 0: one 1: one => " two three four " irb(main):025:0>
原文地址:https://www.jb51.cc/ruby/267694.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。