我有一個Ruby散列,它看起來像無法管理檢查,如果一個Ruby的Hash包含一個值
{"10.1.1.6"=>"nick", "127.0.0.1"=>"nick1"}
但我不能管理檢查,如果某些字符串已經在哈希值。我試過has_value?
,讓使用values
然後使用include?
檢查它是否包含它的值數組,但總是返回false
,當我知道它的存在。例如,我嘗試添加"172.16.10.252"=>"nick"
到哈希和我做的:
class SomeClass
def initialize(*args)
super(*args)
@nicks = Hash.new
end
def serve(io)
loop do
line = io.readline
ip = io.peeraddr[3]
begin
if /NICK (.*)/ =~ line
nick = $1
if @nicks.has_value?(nick) # it fails here
puts "New nick #{$1}"
@nicks[ip] = nick.gsub("\r", "")
io.puts "Your new nick is #{nick}"
else
message = {:ERROR => "100", :INFO=>"#{nick}"}.to_json
io.puts message
end
end
rescue Exception => e
puts "Exception! #{e}-#{e.backtrace}"
end
end
end
end
在irb
它工作正常,但在我的腳本它不
1.9.3p125 :001 > h = {"10.1.1.6"=>"nick", "127.0.0.1"=>"nick1"}
=> {"10.1.1.6"=>"nick", "127.0.0.1"=>"nick1"}
1.9.3p125 :002 > h.has_value?('nick')
=> true
1.9.3p125 :003 > if h.has_value?('nick')
1.9.3p125 :004?> puts "yes"
1.9.3p125 :005?> else
1.9.3p125 :006 > puts "no"
1.9.3p125 :007?> end
yes
=> nil
1.9.3p125 :008 >
我做錯了嗎?
把整個控制器代碼,因爲很多東西還不清楚。目前還不清楚「@ nicks」,「nick」和「ip」是什麼,你在哪裏定義它們。感謝 – shime 2012-04-08 10:20:48
完成後,加入相關的代碼 – pmerino 2012-04-08 10:27:43
,什麼是你在這裏輸入的輸入?正則表達式工作正常嗎?我不會說哈希有問題。檢查前面的'nick'值,看看會發生什麼 – shime 2012-04-08 10:40:39