我知道有很多方法可以在现有的ruby数组中创建新元素。
e.g。
myArray = []
myArray + other_array
myArray << obj
myArray[index] = obj
我也很确定我可以使用.collect
,.map
,.concat
,.fill
,.replace
,.insert
,{{ 1}},.join
和.pack
也可以添加或修改.push
的内容。
但是,我想确保myArray
只包含有效的HTTP / HTTPS网址。
任何人都可以解释我如何强制执行这种行为吗?
答案 0 :(得分:7)
我会创建一个模块,允许您为数组指定接受块,然后覆盖您提到的所有方法(以及更多,如concat
),以便在调用{{1}之前预先过滤参数}}。例如:
super
答案 1 :(得分:1)
使用此插入。 (未经测试)。
def insert_to_array(first_array, second_array)
second_array.each do |i| {
if URI.parse(i).class == URI::HTTP
first_array.insert(i)
end
}
first_array
end
答案 2 :(得分:1)
创建一个类来封装您想要的行为。然后,您可以创建执行所需验证的<<
方法。
将处理此数据的所有逻辑放在此域类的方法中。可能你会发现围绕使用这些数据移动到新类的代码。
我的2美分。