Tag: null

分配给数组并替换出现的nil值

问候! 如下所示为数组赋值时,如何将nil s替换为0 ? array = [1,2,3] array[10] = 2 array # => [1, 2, 3, nil, nil, nil, nil, nil, nil, nil, 2] 如果在分配时不可能,我将如何以最佳方式进行分配? 我想到了array.map { |e| e.nil? ? 0 : e } array.map { |e| e.nil? ? 0 : e } array.map { |e| e.nil? ? 0 : e } ,但是…… 谢谢!

Ruby是否具有nil值的安全导航操作符的语法,比如Groovy?

在Groovy中,有一个很好的语法来处理null值。 例如,我可以做一个if语句: if (obj1?.obj2?.value) { } 即使obj1为null(它将评估为false),也不会抛出NullPointerException。 这是非常方便的,所以想知道我是否错过了Ruby等价物。

如何检查数组中是否设置了nil?

如果我将一些nil值设置为数组,我似乎无法检查它们。 我试过了any? empty? 。 array = [nil, nil, nil] #=> [nil, nil, nil] array[1].any? #=> “NoMethodError: undefined method `any?’ for nil:NilClass”

如何在Ruby中记忆可能返回true,false或nil的方法?

显然||=不会起作用 def x? @x_query ||= expensive_way_to_calculate_x end 因为如果结果是false或nil ,那么expensive_way_to_calculate_x就会反复运行。 目前我知道的最好方法是将值放入Array : def x? return @x_query.first if @x_query.is_a?(Array) @x_query = [expensive_way_to_calculate_x] @x_query.first end 有更传统或更有效的方法吗? 更新我意识到我想记住除了false nil之外 – 这一直回到https://rails.lighthouseapp.com/projects/8994/tickets/1830-railscachefetch-does-not-work-with-false -boolean-as-cached-value – 我对Andrew Marshall道歉,他给出了一个完全正确的答案。

Ruby:IF语句中的Nils

我正在使用的rails应用程序中有以下非常难看的ruby代码: if params.present? if params[:search].present? if params[:search][:tags_name_in].present? … end end end 所有我想问的是是否已经定义了params [:search] [:tags_name_in],但因为params,params [:search]和params [:search] [:tags_name_in]可能都是nil,如果我使用… if params[:search][:tags_name_in].present? …如果没有参数或没有搜索参数,我会收到错误。 肯定有一个更好的方法来做到这一点……建议?

在Ruby中,为什么nil = 1评估为nil?

例如: nil[1] #=> NoMethodError nil[1]=1 #=> nil 这不仅仅是语法,因为变量也是如此: a = nil a[1] #=> NoMethodError a[1]=1 #=> nil 奇怪: nil.method(:[]=) #=> NameError [].method(:[]=) #=> # Ruby 2.3.0p0