在nil的情况下分配替换值
我有几个变量:
name age address phone social_security email weight
还有一个名为personal_details
的数组,其中每个值都在0-6位置。
所以我分配这样的值:
name = personal_details[0] address = personal_details[1] phone = personal_details[2] social_security = personal_details[3] email = personal_details[4] weight = personal_details[5]
但是,在某些情况下,右侧的数据不存在。
除了为数组中的每个元素写这样的东西之外,处理这个的更优雅的方法是什么?
if !personal_detail[0].nil? name = personal_details[0] else name = "" end if !personal_detail[1].nil? address = personal_details[1] else address = "" end
你可以这样做,因为nil
值返回false和||
如果左侧为假,则仅评估右侧:
name = personal_details[0] || ''
name = personal_details[0] || ""
更新:这是不正确的,请参阅下面的讨论。
使用Array #fetch有一种内置的方法:
personal_details = ['Joe User', nil, '12 Main Street'] name = personal_details.fetch(0, '') age = personal_details.fetch(1, '') address = personal_details.fetch(2, '')
其他解决方案将根据您提供的示例正常工作。 如果右侧的一个值设置为false
,则为||
方法将返回空字符串而不是值。
- 从设计中获取错误“用户不响应’设计’方法”运行“rails generate devise:install”时
- 在JSON / XML中渲染非activerecord对象
- Ruby rake loaderror – 捆绑exec rake无法正常工作
- 针对ruby 1.9的Vim语法高亮显示
- 用Minitest惯性模拟OpenURI.open_uri
- Unicorn Rails – 在生产模式下启动时占用100%的CPU
- Rails按以下方式对表进行分组:created_at,返回:status列的计数,然后将:status列分组,每个唯一值的计数
- 如果json有多个数据集,我该如何编写json模式
- 如何运行使用我的Rails模型的Ruby任务?