如果我运行以下代码,我会得到一组X,Y键和一个方向键,所有这些都根据用户输入分配了一个值。完成此操作后,如何提示可以更改hashmap值的用户?假设用户输入x => 1; y => 2; D => N - 我想将x键改为5,但其他键必须保持不变。
def rover_position(position)
{
x: "x position",
y: "y position",
D: "Direction (N,E,S,W)"
}.each_with_object({}) do |(key, message), position|
puts "Please input the rovers #{message}"
$position[key] = gets.chomp
end
end
答案 0 :(得分:1)
常规Ruby变量没有前缀,前缀重要含义:@x
,$x
和x
代表三种完全不同的东西。
这样做:
position[key] = gets.chomp
或者修改你的代码:
PROMPTS = {
x: "x position",
y: "y position",
D: "Direction (N,E,S,W)"
}
def rover_position(position)
puts "Please input the rovers #{message}"
PROMPTS.map do |key, message|
[ key, gets.chomp ]
end.to_h
end
这会产生一个常量,因为你的提示不会从一次运行变为另一次运行,并且会避免with_object
烦恼。