2014-06-07 2 views
0
node :transitType do |u| 
    :Entry if u.type == 'HorseEntryTransit' 
    :Exit if u.type == 'HorseExitTransit' 
end 

다음 코드를 시도해 본 결과이 코드 스 니펫은 true를 반환합니다.이 RABL 노드가 nil을 반환하는 이유는 무엇입니까?

node :transitType do |u| 
    u.type == 'HorseEntryTransit' 
end 
+0

줄을 단순히'u.type'으로 바꿀 때 어떤 결과가 나옵니까? – blotto

+0

마지막 줄을 u.type으로 변경하면 u.type 값 (예 : HorseExitTransit)이 표시됩니다. 귀하의 답변에 대해 – Upperstage

답변

2

코드 블록을 향상시키고 두 조건 (첫 번째 조건이 충족 될 때)을 테스트하지 않아도됩니다. 또한 조건이 충족되지 않은 경우를 가정합니다. 첫 번째 조건이 참이라도 두 번째 조건이 실패하면 nil을 얻는 것처럼 보입니다.

node :transitType do |u| 
    if u.type == 'HorseEntryTransit' 
      :Entry 
    elsif u.type == 'HorseExitTransit' 
      :Exit 
    else 
      nil #or :Neither 
    end 
end 

코드는 두 번째 조건은 아직 테스트되고 해당 조건의 결과가 nil 때문에 첫 번째 조건이 실제로 충족 될 때 작동하지 않습니다.

+0

+1; 감사. 왜 내 코드가 작동하지 않는지 궁금했다. – Upperstage

+0

코드가 nil을 반환하는 이유에 대한 설명을 추가했습니다. – blotto

+0

우수! 그게 내가 필요한거야. 고맙습니다! – Upperstage