我有下面的散列
instance_options[:param_page]
instance_options[:param_page][:comment_page]
instance_options[:param_page][:comment_per]我需要comment_page,comment_per值我做了重构代码,但我不确定什么是最好的哈希空检查让我知道最好的空检查,如果你知道其他人
在此之前
comment_page = 1
comment_per = 0
param_page = instance_options[:param_page]
if param_page
comment_page = param_page[:comment_page].presence || comment_page
comment_per = param_page[:comment_per].presence || comment_per
end之后
comment_page = instance_options[:param_page][:comment_page].present? ? instance_options[:param_page][:comment_page] : 1
comment_per = instance_options[:param_page][:comment_per].present? ? instance_options[:param_page][:comment_per] : 10发布于 2020-01-31 02:48:24
您可以更进一步:
comment_page = instance_options.dig(:param_page, :comment_page).presence || 1
comment_per = instance_options.dig(:param_page, :comment_per).presence || 0这将对instance_options进行两次挖掘,但成本将微不足道。如果您需要考虑类型(假设:comment_page值可以是一个字符串),那么您可以添加#to_i调用:
comment_page = (instance_options.dig(:param_page, :comment_page).presence || 1).to_i
comment_per = (instance_options.dig(:param_page, :comment_per).presence || 0).to_i或者使用reverse_merge (因为这是用于设置默认值):
param_page = instance_options[:param_page] || {}
param_page.reverse_merge(comment_page: 1, comment_per: 0)
# Then use param_page[:comment_page] and param_page[:comment_per] instead of two localshttps://stackoverflow.com/questions/59991786
复制相似问题