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' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |