尝试访问数组中的项目时 nil:NilClass 的未定义方法“[]”
undefined method `[]' for nil:NilClass when trying to access items in an array
我无法访问此数组中的项目,我不确定为什么。
我正在使用名为 FastImage 的 Gem,它获取图像 URL 和 return 其属性来抓取网页,return 它找到的所有图像的宽度和高度。
- url = open("http://google.com/").read
- imgs = URI.extract(url).select{|img| img[/\.(?:png|jpe?g)\b/]}.each do |img|
= FastImage.size(img)
这将打印每个相应数组中的维度,但试图通过其索引访问项目并出现 []
returns 上述错误。
如果img
不是有效的URL图像,FastImage.size(img)
returnsnil
; FastImage.size(img)[0]
会抛出错误。
如果你在Ruby 2.3,你可以写成FastImage.size(img)&.[](0)
,但它很难看。对于任何 Ruby,您可以这样做:
= size = FastImage.size(img) and size[0]
无论哪种情况,更好的正则表达式都应该减少误报,从而减少不必要的 HTTP 请求。一件简单的事情可能是用 $
替换 \b
,因为扩展实际上应该是 URL 中的最后一件事(除非你有奇怪的缓存破坏 URL 之类的foo.jpeg?q=276747622
).
我无法访问此数组中的项目,我不确定为什么。
我正在使用名为 FastImage 的 Gem,它获取图像 URL 和 return 其属性来抓取网页,return 它找到的所有图像的宽度和高度。
- url = open("http://google.com/").read
- imgs = URI.extract(url).select{|img| img[/\.(?:png|jpe?g)\b/]}.each do |img|
= FastImage.size(img)
这将打印每个相应数组中的维度,但试图通过其索引访问项目并出现 []
returns 上述错误。
如果img
不是有效的URL图像,FastImage.size(img)
returnsnil
; FastImage.size(img)[0]
会抛出错误。
如果你在Ruby 2.3,你可以写成FastImage.size(img)&.[](0)
,但它很难看。对于任何 Ruby,您可以这样做:
= size = FastImage.size(img) and size[0]
无论哪种情况,更好的正则表达式都应该减少误报,从而减少不必要的 HTTP 请求。一件简单的事情可能是用 $
替换 \b
,因为扩展实际上应该是 URL 中的最后一件事(除非你有奇怪的缓存破坏 URL 之类的foo.jpeg?q=276747622
).