【发布时间】:2012-01-14 07:30:49
【问题描述】:
在 ruby 中,我不太确定如何处理对象是否为 nil。
例如我有以下内容:
begin
sp = SerialPort.new(@serial_device, @serial_bps, @serial_par, @serial_bits, SerialPort::NONE)
tcp = TCPSocket.new(@host, @port)
if (sp)
sp.print(command)
sp.close
elsif
tcp.print(command)
tcp.close
end
say siri_output
rescue
pp $!
puts "Sorry, I encountered an error: #{$!}"
ensure
request_completed
end
问题是第一个对象返回了一个错误:
No route to host - connect(2)
这是正确的,因为 TCP 没有连接duh。所以我希望它改用下一个对象。
有没有办法在不使用某些异常的情况下做到这一点,我想知道是否有更好的方法来做我想做的事情。
【问题讨论】:
-
你不能使用一个函数来检查它的可用性然后建立连接吗?
-
obj.nil? - 检查对象是否为零的红宝石方法