ruby_parser 및 Ruby2Ruby 젬을 사용하여 어떤 조건이 평가되었는지와 그 결과와 매개 변수가 무엇인지 추적하는 코드를 작성합니다. 가능한 한 간단하게 유지하기 위해 때때로 AST를 약간 재 작성합니다. 물론 결과가 원래와 정확히 동일하면 확신 할 수 있습니다.Ruby에서 if 문과 case 문 형식의 동일성
트리플 점이 유효한 Ruby 표현으로 대체된다고 가정하면 다음 세 개의 루비 스 니펫이 기능상 동일하다고 주장하는 것에 맞습니까? 어떤 엣지 케이스가 내려다 보입니까?
case var
when foo
something
when ...
another_thing
else
something_else
end
if foo === var
something
elsif ... === var
another_thing
else
something_else
end
case
when foo === var
something
when ... === var
another_thing
else
something_else
end
좋은 지적. 코드에는 이미 부작용이있는 인수에 대해 작동하지 않는다는 엄격한 경고가 포함되어 있습니다 (여기에서 설명한 것과 비슷한 이유로). 그러나 여기에도 적용된다는 것을 아직 알지 못했습니다. 그에 따라 문서를 수정했습니다. – Confusion