Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 确定给定IP地址是否在网络阵列中_Ruby_Arrays_Networking - Fatal编程技术网

Ruby 确定给定IP地址是否在网络阵列中

Ruby 确定给定IP地址是否在网络阵列中,ruby,arrays,networking,Ruby,Arrays,Networking,我试图确定一个给定的IP是否在一系列网络中。对IPAddr对象数组使用include?似乎不起作用(if条件从未满足),例如: 但是,如果我定义一个没有阵列的单一网络,它可以很好地工作: internal = IPAddr.new("192.168.10.1/24") 如果你需要更多信息,请告诉我。我对ruby不熟悉,所以要友善:)。IPAddr类有自己的include?方法,它与Array\include? 当你说internal.include?时,你实际上是在调用Array#inclu

我试图确定一个给定的IP是否在一系列网络中。对
IPAddr
对象数组使用
include?
似乎不起作用(if条件从未满足),例如:

但是,如果我定义一个没有阵列的单一网络,它可以很好地工作:

internal = IPAddr.new("192.168.10.1/24")

如果你需要更多信息,请告诉我。我对ruby不熟悉,所以要友善:)。
IPAddr
类有自己的
include?
方法,它与
Array\include?

当你说
internal.include?
时,你实际上是在调用
Array#include?
来测试对象的平等性。显然,这些对象不同,因此比较失败

您真正想要的是查看是否有任何
IPAddr
对象
include?
your
my\u IPAddr
对象

if internal.any? {|subnet| subnet.include?(my_ipaddr) }
    puts "I'm in the internal network"
end

IPAddr
类有自己的
include?
方法,与
Array\include?

当你说
internal.include?
时,你实际上是在调用
Array#include?
来测试对象的平等性。显然,这些对象不同,因此比较失败

您真正想要的是查看是否有任何
IPAddr
对象
include?
your
my\u IPAddr
对象

if internal.any? {|subnet| subnet.include?(my_ipaddr) }
    puts "I'm in the internal network"
end

您要求Ruby查看数组中是否有任何对象与IP地址匹配,但它们不会匹配。IP网络与主机IP不相同

相反,您必须将主机IP与单个IP范围进行比较,并查看是否包含该范围

请参见IPAddr类中的:

internal.any? { |i| i.include?(my_ipaddr) }
可枚举的
any?
返回true/false。使用
find
获取第一个:

internal.find { |i| i.include?(my_ipaddr) }

如果您正在进行大量的IP地址操作或子网,请查看gem。真的很好

您要求Ruby查看数组中是否有任何对象与IP地址匹配,但它们不会匹配。IP网络与主机IP不同

相反,您必须将主机IP与单个IP范围进行比较,并查看是否包含该范围

请参见IPAddr类中的:

internal.any? { |i| i.include?(my_ipaddr) }
可枚举的
any?
返回true/false。使用
find
获取第一个:

internal.find { |i| i.include?(my_ipaddr) }

如果您正在进行大量的IP地址操作或子网,请查看gem。真的很好

效果很好。IPAddr对我来说似乎足够了,但是如果我需要的话,我会记住这个宝石。很好。IPAddress将是取代IPAddr的一个很好的候选者,而且,如果我没记错的话,关于这一点有过讨论。我认为它从那时起就被抛到了一边,但这对Ruby来说是件好事。效果很好。IPAddr对我来说似乎足够了,但是如果我需要的话,我会记住这个宝石。很好。IPAddress将是取代IPAddr的一个很好的候选者,而且,如果我没记错的话,关于这一点有过讨论。我想从那时起它就被抛到了一边,但这对Ruby来说是件好事。