나는 Dish라는 클래스를 만들었는데, 거기서 많은 메뉴 객체, 이름과 가격을 포함하는 메뉴 항목, 초기화 된 메소드를 통해 얻은 정보를 만들었습니다. Ruby에서 인스턴스화 된 객체 정보를 포함하는 해시 배열을 반복하는 방법은 무엇입니까?
chickenstew = Dish.new("Chicken Stew", 4.50)
를 호출 할 때 I는 상기 방법 및
def add_to_menu
@menu << args
를 사용하여, 메뉴라고하는 새로운 클래스의 인스턴스 변수를 포함
@menu = []
배열 이러한 개체들을 첨가. 나는 개별 개체를 포함하는 새 메뉴 배열을 표시 할 때, 다음과 같이 분명히 이름과 가격 정보 이외에, 오브젝트 정보를 얻을 :
[[#<Dish:0x007f9662134818 @dish={:name=>"Chicken Stew", :price=>4.5}>,
#<Dish:0x007f966206ec30 @dish={:name=>"Beef & Ale Pie", :price=>5.0}>,
#<Dish:0x007f966101a7a8 @dish={:name=>"Chicken & Leek Pie", :price=>4.0}>,
#<Dish:0x007f9662365420 @dish={:name=>"Vegetable Pie", :price=>3.5}>,
#<Dish:0x007f96622de038 @dish={:name=>"Fish Pie", :price=>5.5}>,
#<Dish:0x007f966224f068 @dish={:name=>"Chips", :price=>2.0}>,
#<Dish:0x007f966222c1d0 @dish={:name=>"Mushy Peas", :price=>1.5}>]]
내 질문은,이 땅에서이 반복 어떻게 해시 배열, 이름과 가격 정보를 추출하기 위해서는 puts
화면에 표시 하시겠습니까? 나는 @menu.each { |hash| puts "Item: #{hash[:name]. Price: £#{hash[:price]}" }
시도했지만이 분명히 실패하고 나는 그런 같은 오류의 끝 얻을 '형식 오류를 : 정수로 기호의 암시 적 변환'
어떤 도움도 인정되지 않을 것입니다.
당신은'[[..]]'을 가지고 있으므로 @menu [0] .each {..'가 작동합니다. '해시'라고 생각하는 것은 실제로'AR' 객체 인'Dish' 객체입니다. –
그 도움에 대한 건배, 그것은 불행히도,하지만 그게 아니라 코드를 시도하는 것보다 dish.name과 dish.price를 호출해야하지만 그걸로 [0]을 추가해야 할 수도 있습니다. 건배! – sdawes
아니요. 오류는 '@menu.each {| hash | ', 여기서 여러분이 생각하는 '해시'는 내부 '배열'입니다. 그리고 당신은'[: name]'이라고 불렀고 그것은 오류를 던집니다. 그래서 @menu [0] .each {| hash | 항목 : # {hash [: name]. 가격 : £ # {hash [: price]} "}'역시 작동합니다. –