Return 个 hashmap 成员通过 class get 方法
Return members of a hashmap through a class get method
以下returns default
"client?"
:
class ClientMap
def initialize
@@clients = {"DP000459": "BP"}
@@clients.default = "client?"
end
def get(id)
return @@clients[:id]
end
end
clientMap = ClientMap.new
cKey = "DP000459"
puts clientMap.get(cKey)
谁能解释为什么我无法检索到 'default' 之外的任何内容?
你有两个问题。首先,您在哈希中使用符号语法,只有当您的键是符号时才有效。如果你希望keys是字符串,你需要使用hash-rocket语法:@@clients = {'DP000459' => 'BP'}
.
其次,你的方法 returns clients[:id]
不管提供什么参数。关键是符号 :id
而不是局部变量 id
。您需要将其更改为 @@clients[id]
.
这是您想要的清理版本:
class ClientMap
def initialize
@@clients = {'DP000459' => 'BP'}
@@clients.default = 'client?'
end
def get(id)
@@clients[id]
end
end
我还冒昧地使间距更 Ruby-地道。
最后,对于Ruby中的变量名,use snake_case:
>> client_map = ClientMap.new
>> c_key = 'DP000459'
>> client_map.get(c_key)
#> "BP"
看看这些代码:
h = { foo: 'bar' } # => {:foo=>"bar"}
h.default = 'some default value' # => "some default value"
h[:foo] # => "bar"
h[:non_existing_key] # => "some default value"
您可以阅读 here 关于 Hash#default 方法的内容
Returns the default value, the value that would be returned by hsh if
key did not exist in hsh
以下returns default
"client?"
:
class ClientMap
def initialize
@@clients = {"DP000459": "BP"}
@@clients.default = "client?"
end
def get(id)
return @@clients[:id]
end
end
clientMap = ClientMap.new
cKey = "DP000459"
puts clientMap.get(cKey)
谁能解释为什么我无法检索到 'default' 之外的任何内容?
你有两个问题。首先,您在哈希中使用符号语法,只有当您的键是符号时才有效。如果你希望keys是字符串,你需要使用hash-rocket语法:@@clients = {'DP000459' => 'BP'}
.
其次,你的方法 returns clients[:id]
不管提供什么参数。关键是符号 :id
而不是局部变量 id
。您需要将其更改为 @@clients[id]
.
这是您想要的清理版本:
class ClientMap
def initialize
@@clients = {'DP000459' => 'BP'}
@@clients.default = 'client?'
end
def get(id)
@@clients[id]
end
end
我还冒昧地使间距更 Ruby-地道。
最后,对于Ruby中的变量名,use snake_case:
>> client_map = ClientMap.new
>> c_key = 'DP000459'
>> client_map.get(c_key)
#> "BP"
看看这些代码:
h = { foo: 'bar' } # => {:foo=>"bar"}
h.default = 'some default value' # => "some default value"
h[:foo] # => "bar"
h[:non_existing_key] # => "some default value"
您可以阅读 here 关于 Hash#default 方法的内容
Returns the default value, the value that would be returned by hsh if key did not exist in hsh