2014-12-18 3 views
0
[8] pry(#<Plan>)> self[:total_outstanding]||0/self.dd_amount 
=> 10100.0 
[9] pry(#<Plan>)> self[:total_outstanding]||0 
=> 10100.0 
[10] pry(#<Plan>)> self.dd_amount 
=> 900.0 
[11] pry(#<Plan>)> self[:total_outstanding].to_i||0/self.dd_amount.to_i 
=> 10100 

자기 보여주는 [을 : total_outstanding] .to_i || 0/self.dd_amount.to_i (11) 대신에 10100의를 reuturn해야하는 내가 이것을 디버깅하려고레일이 잘못 계산

첫 번째 속성의 값 코드를 실행하면 놀리려는 세션

에 그냥 잘못 10100과 같은 값 ..

+1

참고로'nil.to_i == 0 ' –

답변

4

을 고려했던 OR 연산자 (||)을 나누기 연산자 (/)보다 낮은 우선 순위를가집니다.

루비는이 귀하의 마지막 줄을 해석한다 : 그것은 truthy 값이 있기 때문에 그냥 self[:total_outstanding].to_i를 반환합니다

self[:total_outstanding].to_i || (0/self.dd_amount.to_i) 

. 함께이 같은

그룹 self[:total_outstanding].to_i||0 :

(self[:total_outstanding].to_i||0)/self.dd_amount.to_i 
+0

세상에 ... 내가 놓칠 수있는 방법이 있습니다 .. 프롬프트 응답을 주셔서 감사합니다 ... 멋진 .. – whizcreed

+0

운영자 '||'는 연산자'/'보다 * 우선 순위가 낮지 만 높지 않습니다. [this] (http://ruby-doc.org/core-2.1.5/doc/syntax/precedence_rdoc.html)를 참조하십시오. – user4235730

+0

하지만 8 월의 솔루션이 작동합니다 .. 이제 더 분명 해 보입니다. 하지만 @ user4235730 링크를 공유해 주셔서 감사합니다. .. 매우 도움이 .. – whizcreed