如何在ruby中从哈希映射中提取值并存储在数组中?
我已经有一张学校的散列图,上面的键是学生的名字。我想提取所有信息并创建哈希图,将学生的如何在ruby中从哈希映射中提取值并存储在数组中?,ruby,arrays,hash,Ruby,Arrays,Hash,我已经有一张学校的散列图,上面的键是学生的名字。我想提取所有信息并创建哈希图,将学生的学校ID作为主键。 我犯了一个错误 main:对象的未定义局部变量或方法“key1” 将key1和array2移动到def块中或作为参数传入。Ruby def块不是闭包——它们无法访问在其外部定义的局部变量。将key1和array2移动到def块中或作为参数传入。Ruby def块不是闭包——它们不能访问在它们外部定义的局部变量。在Ruby中定义新方法时,将创建一个新的作用域,有关详细信息,请参阅 例如,您可以
学校ID
作为主键。
我犯了一个错误
main:对象的未定义局部变量或方法“key1”
将key1和array2移动到def块中或作为参数传入。Ruby def块不是闭包——它们无法访问在其外部定义的局部变量。将key1和array2移动到def块中或作为参数传入。Ruby def块不是闭包——它们不能访问在它们外部定义的局部变量。在Ruby中定义新方法时,将创建一个新的作用域,有关详细信息,请参阅 例如,您可以使用lambda来代替
def print\u info(school\u hash)
school_hash = lambda do |school_hash|
# ..your method body
end
school_hash.call(hash)
其他解决方案-仅提出:
key1=Array.new
array2=Array.new
在方法的主体中。在ruby中定义新方法时,将创建一个新的作用域,有关详细信息,请参阅 例如,您可以使用lambda来代替
def print\u info(school\u hash)
school_hash = lambda do |school_hash|
# ..your method body
end
school_hash.call(hash)
其他解决方案-仅提出:
key1=Array.new
array2=Array.new
您可以将
key1
更改为@key1
,将array2
更改为@array2您可以将key1
更改为@key1
,将array2
更改为@array2