2014-04-07 2 views
0

Ruby Monk Primer "주문 및 비용"문제를 해결하려고합니다. https://rubymonk.com/learning/books/1-ruby-primer/problems/155-restaurant[] .each와 [] .array.inject 구현의 차이점 (Ruby Monk Challenge)

하나의 주문이 통과되었지만 여러 주문이 아닌 경우에만 작동하는 솔루션을 고안했습니다.

내 코드가 제안 된 대답과 기능적으로 다른 점을 이해하는 데 어려움을 겪고 있습니다. 또한 Ruby Monk이 "여러 주문"을 전달하는 방식을 이해하지 못합니다. 주입과. 각 사이의 모든 설명은 매우 도움이 될 것입니다. 루비 스님의 코드에 비해

class Restaurant 
    def initialize(menu) 
    @menu = menu 
end 

def cost(*orders) 
    orders.inject(0) do | total_cost, order | 
    order.each { | item, qt | total_cost = total_cost + @menu[item] * qt } 
    return total_cost 
    end 
end 
end 

는 :

def cost(*orders) 
    orders.inject(0) do |total_cost, order| 
    total_cost + order.keys.inject(0) {|cost, key| cost + @menu[key]*order[key] } 

는 당신의 도움을 주셔서 감사합니다 :)

답변

0

귀하의 구현은 각 실제로 괜찮 사용. 문제는 total_cost를 명시 적으로 반환하면 함수를 조기에 종료한다는 것입니다. 루비는 암시 적으로 평가할 마지막 것을 반환 할 것이므로 "return"이라는 단어를 제거하면 솔루션이 작동합니다!