繁体   English   中英

从方法Ruby中选择随机哈希

[英]Choose Random Hash from Method Ruby

我可能会和这个一起走一些。

我正在将Cucumber Capybara与Ruby结合使用,我想创建一些特定数据的哈希,然后进行测试以随机选择这些哈希之一。 能做到吗?

我的方法包含哈希:

def random_vehicles


a1 = {:vrm => 'A1',
      :id => '11111111111',
      :post_code => 'AA11AA'
  }

b1 = {:vrm => 'B1',
      :id => '22222222222',
      :post_code => 'BB11BB'
  }

end

如何在该方法中随机选择两个哈希值之一? 如:

sample = random_vehicles.sample   # This doesn't work

谢谢

尝试

def random_vehicles
  a1 = {:vrm => 'A1',
      :id => '11111111111',
      :post_code => 'AA11AA'
  }

  b1 = {:vrm => 'B1',
      :id => '22222222222',
      :post_code => 'BB11BB'
  }

  [a1, b1]
end

vehicles = random_vehicles
p vehicles.sample

您可以通过以下方法修改方法,以使初始的random_vehicles.sample起作用:

def random_vehicles
  [
    {:vrm => 'A1',
      :id => '11111111111',
      :post_code => 'AA11AA'
    },
    {:vrm => 'B1',
      :id => '22222222222',
      :post_code => 'BB11BB'
    }
  ]
end

random_vehicles.sample
#=> {:vrm=>"B1", :id=>"22222222222", :post_code=>"BB11BB"}
random_vehicles.sample
#=> {:vrm=>"A1", :id=>"11111111111", :post_code=>"AA11AA"}

请注意,方法名称很重要:它取决于您实际希望方法返回的内容。 在这种情况下,方法名称为sample_vehicles (复数),因此感觉很自然,它返回对象的集合。

如果您需要它已经返回车辆,则应更改方法并重命名:

def random_vehicle
  [
    {:vrm => 'A1',
      :id => '11111111111',
      :post_code => 'AA11AA'
    },
    {:vrm => 'B1',
      :id => '22222222222',
      :post_code => 'BB11BB'
    }
  ].sample
end

random_vehicle
#=> {:vrm=>"B1", :id=>"22222222222", :post_code=>"BB11BB"}
random_vehicle
#=> {:vrm=>"B1", :id=>"22222222222", :post_code=>"BB11BB"}
random_vehicle
#=> {:vrm=>"A1", :id=>"11111111111", :post_code=>"AA11AA"}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM