在Ruby中有一种优雅的方法吗?

bpe*_*ira 1 ruby

我想要一个算法来正确设置首选名称.这将是用户的偏好.用户可以在社交名称和民用名称之间进行选择.其中只有一个是强制性的,但如果是nil,我想选择另一个.

if name_preference == SOCIAL_NAME_PREFERENCE && !social_name.nil? || name_preference == CIVIL_NAME_PREFERENCE && civil_name.nil?
  social_name
elsif name_preference == CIVIL_NAME_PREFERENCE && !civil_name.nil? || name_preference == SOCIAL_NAME_PREFERENCE && social_name.nil?
  civil_name
end
Run Code Online (Sandbox Code Playgroud)

ssc*_*eck 5

另一种强调用户选择的方法.

if name_preference == CIVIL_NAME_PREFERENCE
  civil_name || social_name 
elsif name_preference == SOCIAL_NAME_PREFERENCE
  social_name || civil_name
end
Run Code Online (Sandbox Code Playgroud)

该示例使用了Ruby属性nil的计算结果为false.因此nil?检查可以替换为||.