使用 ruby_parser 和 Ruby2Ruby gems,我正在编写代码来跟踪已评估的条件以及它们的结果和参数是什么。为了使这尽可能简单,我有时会稍微重写 AST。当然,只有当我确定结果的功能与原始结果完全相同时,我才能这样做。
我是否正确断言以下三个 Ruby 片段在功能上是等效的,假设三个点被一个有效的 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