【发布时间】:2011-11-07 05:07:27
【问题描述】:
总红宝石菜鸟。我正在通过 Zed Shaw 的 LRTHW,并且我被困在 Hash 练习中。我无法理解这段代码,并且在网络上找不到任何看起来像它的东西。
cities = {'CA' => 'San Francisco', 'MI' => 'Detroit', 'FL' => 'Jacksonville'}
cities['NY'] = 'New York'
cities['OR'] = 'Portland'
def find_city (map, state)
if map.include? state
return map[state]
else
return "Not found."
end
end
cities[:find] = method(:find_city)
while true
print "State? (Enter to quit) "
state = gets.chomp
break if state.empty?
puts cities[:find].call(cities, state)
end
基本上,我只是卡住了。我无法在我输入一个州的方式和它返回城市之间建立联系。任何愚蠢的解释将不胜感激。
【问题讨论】:
-
这段代码看起来不像是为了清楚起见而写的。也许它是为了演示 ruby 的某些特定部分而编写的,例如
method方法?map参数应重命名为哈希。无需使用method; Zed 可以在他的 while 循环中简单地调用find_city。如果他真的想,他可以在哈希表上添加find作为Singleton方法,那么你不需要map参数(只使用self)。 -
如果您正确引用找到代码的网站/书籍并告诉我们您不理解的第一行代码是什么,这将是一个更好的问题。