def get_type
x = [{:type=>'A', :patterns=>['foo.*']}, {:type=>'B', :patterns=>['bar.*']}]
name = 'foo.txt'
result = x.each { |item|
item[:patterns].each { |regex|
puts "Checking #{regex} against #{name}"
if !name.match(regex).nil?
puts "Found match: #{item[:type]}"
return item[:type]
end
}
}
end
result = get_type
puts "result: #{result}"
Checking foo.* against foo.txt
Found match: A
result: A
然而,所有我看到的是:
Checking foo.* against foo.txt
Found match: A
我目前的解決辦法是這樣的:
def get_type
x = [{:type=>'A', :patterns=>['foo.*']}, {:type=>'B', :patterns=>['bar.*']}]
name = 'foo.txt'
result = []
x.each { |item|
item[:patterns].each { |regex|
puts "Checking #{regex} against #{name}"
if !name.match(regex).nil?
puts "Found match: #{item[:type]}"
result << item[:type]
end
}
}
result[0] unless result.empty?
end
爲什麼第一個ap打工?或者可能是'工作',我只是不明白爲什麼我沒有得到我所期望的。
你說得對。我還有其他一些錯字。我發現的是,如果沒有匹配,那麼「結果」將被設置爲等於'x'數組。這是我需要注意的一個條件。 – codecraig 2011-03-07 16:14:39