if params[:parent_type] == "Order"
parent_id = nil
else
parent_id = params[:parent_id]
end
Ruby 人会因为我这样写而嘲笑我吗?它似乎不像我见过的一些 Ruby 代码那样特别简洁。
这在我看来完全合理。您可以将赋值移到 if ( ) 前面parent_id = if params...
或使用三元组,但我认为结果看起来不会更好。
如果 parent_id 在该行之前为 nil 或未定义,您可以简单地编写:
parent_id = params[:parent_id] unless params[:parent_type] == "Order"
照原样并没有什么问题,但可以更简洁:
parent_id = (params[:parent_type] == "Order") ? nil : params[:parent_id]
或者:
parent_id = if (params[:parent_type] == "Order")
nil
else
params[:parent_id]
end
我认为它的方式很好。我是一个 Ruby 人,我不会因为你这样写而嘲笑你。代码的作用很清楚,并且没有真正的代码重复,所以我不会担心。
我喜欢:
parent_id = (params[:parent_type] == "Order" ? nil : params[:parent_id])
另一种变化:
parent_id = (params[:parent_type] == "Order") && params[:parent_id]
我们可以使用 Ruby 三元运算符。类似的东西:
parent_id = params[:parent_type] == "Order" ? nil : params[:parent_id]
如果parent_id
设置了nil
值,我们可以编写一个除非语法:
parent_id = params[:parent_id] unless params[:parent_type] == "Order"
或者以不同的方式编写一个简单的 Ruby if-else:
parent_id = if (params[:parent_type] == "Order")
nil
else
params[:parent_id]
end
对于更多Idiomatic Ruby编码方式,我发现了一篇很棒的文章。