gpt4 book ai didi

Ruby - 每个都有单例模块。返回一个值给出一个枚举器。我怎样才能获得值(value)呢?

转载 作者:太空宇宙 更新时间:2023-11-03 18:09:33 25 4
gpt4 key购买 nike

示例代码:

module Creatures
class << self
def to_h
{
squirtle: {full_name: 'Squirtle T. Turtle'},
pikachu: {full_name: 'Pikachu B. Pikachu'}
}
end
def keys
to_h.keys
end
def collect
to_h.keys.collect
end
def each
to_h.keys.each
end
end
end

module CompanionHelper
def get_companion_creature_experience(companion_data)
Creatures.each do |creature|
return companion_data[creature]["#{creature}_experience".to_sym] if companion_data.has_key?(creature)
end
end
end

include CompanionHelper
companion_data = {squirtle: {squirtle_experience: 8000}}

get_companion_creature_experience(companion_data)

如果这个例子是人为设计的,请原谅我。原始代码来自保险界,但我无法复制和粘贴 :)

问题的症结在于我想在另一个模块中使用Creatures.each,传递一个 block ,让它像Creatures.keys.each一样工作会起作用(即,对于给定的示例伴随数据,我为 get_companion_creature_experience(companion_data) 获得 8000。

目前我得到的是 Enumerator

最佳答案

问题是 to_h.keys.each 返回不期望任何参数的 Enumerator。在 each 中传递一个 block ,因为你想使用它:

def each &block
to_h.keys.each &block
end

或者你可以让出它:

def each
to_h.keys.each do |k|
yield k
end
end

关于Ruby - 每个都有单例模块。返回一个值给出一个枚举器。我怎样才能获得值(value)呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37195807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com