2014-12-23 39 views
1

我的所有IP地址如下所示。检查一个变量是否在ruby数组中

list_of_ips = Socket.ip_address_list.select{|intf| intf.ipv4?} 

我想使用可枚举包括检查该数组是否包含IP 192.168.1.27这是这样,但我得到的返回值设置为false。

puts list_of_ips[1].ip_address ## This prints 192.168.1.27 
puts $this_is_my_ip    ## This prints 192.168.1.27 

puts list_of_ips.include? '192.168.1.27' ## Gives me false 

我想我需要使用到阵列IP_ADDRESS莫名其妙地过滤,但不知道如何。

回答

6
list_of_ips.any? {|ip| ip.ip_address == '192.168.1.27'} 
+0

聪明...还剩下什么? :) –

+0

我猜不是。 :) – Santhosh

2

您需要将数组中的对象临时转换为字符串,以将它们与字符串进行比较。试试这个:

list_of_ips.map {|addr| addr.ip_address}.include? '192.168.1.27' 
+0

是..这是...投票了。 –

+1

'list_of_ips.map(&:ip_address)' – Max

+0

@max:我总是忘记这个快捷方式,尽管我已经使用ruby多年了。谢谢! – Linuxios

相关问题