加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 苗条的局部变量三元分配

发布时间:2020-12-16 21:05:32 所属栏目:百科 来源:网络整理
导读:我有一个苗条的部分,如此: - name = (defined?(name) ? name : 'tags')- id = (defined?(id) ? id : ('input-' + name))- label = defined?(label) ? label : nil- placeholder = defined?(placeholder) ? placeholder : nil- className = defined?(classNa
我有一个苗条的部分,如此:
- name = (defined?(name) ? name : 'tags')
- id = (defined?(id) ? id : ('input-' + name))
- label = defined?(label) ? label : nil
- placeholder = defined?(placeholder) ? placeholder : nil
- className = defined?(className) ? className : nil
- prefetch = defined?(prefetch) ? prefetch : nil
- displayKey = defined?(displayKey) ? displayKey : nil
- valueKey = defined?(valueKey) ? valueKey : nil

.input-container.tags
  - if label
    label for="#{id}" = label
  input type="text" id="#{id}" name="#{name}" placeholder="#{placeholder}" data-prefetch="#{prefetch}" data-displayKey="#{displayKey}" data-valueKey="#{valueKey}"

当我使用它(通过==渲染)并传递当地人时 – 一切都很好.

但是当我省略,例如,名称 – 它没有分配给默认的’标签’.同样适用于id.它们只是空的.如果我在开头注释掉分配 – 未定义的变量错误会引发预期.

作业有什么问题?

解决方法

你不需要苗条.只需代码:
name = (defined?(name) ? name : 'tags')
p name #=> nil

它不起作用,因为你在语句name =的左侧隐式定义了名称.所以当Ruby解释器评估定义的?(name)时,它会给出真正的结果.

我想你已经得到了答案:

unless defined?(name)
  name = 'tags'
end

或更短:

name ||= 'tags'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读