if params[:parent_type] == "Order"
parent_id = nil
else
parent_id = params[:parent_id]
end
一个Ruby人会嘲笑我这样写吗?它看起来并不像我见过的一些Ruby代码那么简洁。
答案 0 :(得分:9)
这对我来说非常合理。您可以在if(parent_id = if params...
)前面移动作业或使用三元组,但我认为结果看起来不会更好。
如果parent_id在该行之前为nil或未定义,则只需编写:
parent_id = params[:parent_id] unless params[:parent_type] == "Order"
答案 1 :(得分:7)
原样没有什么问题,但可以更简洁:
parent_id = (params[:parent_type] == "Order") ? nil : params[:parent_id]
可替换地:
parent_id = if (params[:parent_type] == "Order")
nil
else
params[:parent_id]
end
答案 2 :(得分:5)
我认为它的方式很好。我是一个红宝石的人,我不会因为这样的方式而嘲笑你。很清楚代码的作用是什么,并且没有真正的代码重复,所以我不担心它。
答案 3 :(得分:2)
我喜欢:
parent_id = (params[:parent_type] == "Order" ? nil : params[:parent_id])
答案 4 :(得分:1)
还有一个变种:
parent_id = (params[:parent_type] == "Order") && params[:parent_id]
答案 5 :(得分:0)
我们可以使用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代码方式,我发现了一个awesome article。