如何从用户输入编辑hashmap值?

时间:2017-11-19 03:58:26

标签: ruby-on-rails ruby

如果我运行以下代码,我会得到一组X,Y键和一个方向键,所有这些都根据用户输入分配了一个值。完成此操作后,如何提示可以更改hashmap值的用户?假设用户输入x => 1; y => 2; D => N - 我想将x键改为5,但其他键必须保持不变。

代码as suggested by jvillian

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

1 个答案:

答案 0 :(得分:1)

常规Ruby变量没有前缀,前缀重要含义@x$xx代表三种完全不同的东西。

这样做:

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烦恼。