通常从Ruby对象获取值?
我经常遇到这样或类似的问题,我想了解从对象获取值背后的思维过程,这样我就能解决类似的问题 如果你有一个类似的例子来说明这一点,那么这只是一个好例子 问题: 如何获取内容长度的值 你是如何找到解决方案的 如果我做了pp res,那么我得到了通常从Ruby对象获取值?,ruby,oop,Ruby,Oop,我经常遇到这样或类似的问题,我想了解从对象获取值背后的思维过程,这样我就能解决类似的问题 如果你有一个类似的例子来说明这一点,那么这只是一个好例子 问题: 如何获取内容长度的值 你是如何找到解决方案的 如果我做了pp res,那么我得到了 #<HTTP::Message:0x0055ab1ef42738 @http_body= #<HTTP::Message::Body:0x0055ab1ef42698 @body= "...", @chunk_size=n
#<HTTP::Message:0x0055ab1ef42738
@http_body=
#<HTTP::Message::Body:0x0055ab1ef42698
@body=
"...",
@chunk_size=nil,
@positions=nil,
@size=0>,
@http_header=
#<HTTP::Message::Headers:0x0055ab1ef42710
@body_charset=nil,
@body_date=nil,
@body_encoding=#<Encoding:ASCII-8BIT>,
@body_size=0,
@body_type=nil,
@chunked=false,
@dumped=false,
@header_item=
[["Connection", "close"],
["Content-Type", "text/html"],
["Content-Length", "291"]],
@http_version="1.1",
我不知道您正在使用哪个库,但您可以简单地使用脏实例变量:
arr = res.instance_variable_get(:@http_header).instance_variable_get(:@header_item)
现在,只需在数组中搜索:
arr.find { |a| a.first == 'Content-Length' }.last
#=> "291"
我不知道您正在使用哪个库,但您可以简单地使用脏实例变量:
arr = res.instance_variable_get(:@http_header).instance_variable_get(:@header_item)
现在,只需在数组中搜索:
arr.find { |a| a.first == 'Content-Length' }.last
#=> "291"
不幸的是,你没有告诉我们那个物体是什么。我最好的猜测是它是一个来自宝石的物体。如果是这种情况,则使用以下方法获取内容长度标题:
不幸的是,你没有告诉我们那个物体是什么。我最好的猜测是它是一个来自宝石的物体。如果是这种情况,则使用以下方法获取内容长度标题:
挖掘对象的内部通常不是一个好主意。相反,您应该检查对象的文档,并尽可能使用其公共接口。通常,类并不保证它们的内部表示。任何更新都可以以任何方式改变这一点,而通过公开方法的外部接口通常会保持稳定。挖掘对象的内部通常不是一个好主意。相反,您应该检查对象的文档,并尽可能使用其公共接口。通常,类并不保证它们的内部表示。任何更新都可以以任何方式改变这一点,而通过公开方法的外部接口通常会保持稳定。