How would you make this ternary?
if @user.skill.present?
@skill = @user.skill
else
@skill = Skill.new
end
答案 0 :(得分:3)
@skill = @user.skill || Skill.new
如果@ user.skill的值为nil,则将下一个值(Skill.new)设为@skill。
答案 1 :(得分:1)
我会用:
@skill = @user.skill.present? ? @user.skill : Skill.new
但是,ternery声明通常不会提高可读性/可维护性。它们也不会提高处理速度。他们对一些Ruby代码商店和编码风格感到不满,因为它们太容易被滥用/滥用。
在这种情况下使用if
/ else
是完全合适的,所以不要害怕走那条路。考虑一下:如果您使用三元运算符编写逻辑,并且需要对返回值添加其他处理,则无论如何都必须切换到使用常规if
/ else
处理,否则您将生成一些可怕的代码会降低其可读性。
答案 2 :(得分:0)
you can try
@user.skill.present? ? @skill = @user.skill : @skill = Skill.new
答案 3 :(得分:0)
@skill = @user.skill.present? ? @user.skill : Skill.new
perhaps more readable as a two liner
@skill = @user.skill
if @skill.blank? @skill = Skill.new