Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从用户输入编辑hashmap值?_Ruby On Rails_Ruby - Fatal编程技术网

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

Ruby on rails 如何从用户输入编辑hashmap值?,ruby-on-rails,ruby,Ruby On Rails,Ruby,如果我运行下面的代码,我会得到一组X、Y键和一个方向键,所有这些键都根据用户的输入分配了一个值。完成此操作后,如何提示能够更改hashmap值的用户?假设用户输入x=>1;y=>2;D=>N-我希望将x键更改为5,但其他键必须保持不变 代码: 常规Ruby变量没有前缀,前缀具有重要意义:@x、$x和x代表三种完全不同的东西 只要这样做: position[key] = gets.chomp 或者重新编写代码: PROMPTS = { x: "x position", y: "y pos

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

代码:


常规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
的麻烦。

如果用户为x输入1,它将如何变为5?我不确定您的代码有什么问题,但首先要删除
$
位置中的
$
。。与bash不同,ruby在使用变量时不预先添加
$
。当你说
$position
时,它实际上指的是一个从未设置过的全局变量。如果不是因为对未定义全局变量的引用等于
nil
,你会得到一个NoMethodError。我看到你使用的是我在前面的问题中提供的代码。但是,你从来没有接受过这个答案。
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