2014-12-23 56 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

相關問題