草庐IT

Nil-Coalescing

全部标签

ruby - Ruby 是否有 nil 值的安全导航运算符的语法,就像在 Groovy 中一样?

在Groovy中,有一个很好的语法来处理空值。例如,我可以做一个if语句:if(obj1?.obj2?.value){}这不会抛出NullPointerException,即使obj1为null(它的计算结果为false)。这是非常方便的东西,所以想知道是否有我错过的Ruby等价物。 最佳答案 在Rails应用程序中有Object#try所以你可以这样做obj1.try(:obj2).try(:value)或者用一个block(如下面的评论所述)obj.try{|obj|obj.value}更新在ruby​​2.3中有这样的运算符:

ruby-on-rails - rails : Finding max of array that may contain nil

给定:shipping_costs={key1:45,key2:99,key3:nil,key4:24}假设nil=0,获取这些键的最大值的最简洁方法是什么?如果我在Rails控制台中直接运行shipping_costs.values.max,我会得到:ArgumentError:comparisonofFixnumwithnilfailed在运行max之前将这些nils变成零的最干净的方法? 最佳答案 如果你想让它非常简洁,你可以使用shipping_costs.values.compact.maxcompact方法从数组中删除所

ruby - 为什么 Ruby 的默认参数值没有分配给 nil 参数?

我是Ruby的新手,遇到了一些让我有点困惑的事情。我在方法签名中设置了默认参数值。调用该方法时,我向该参数传递了一个nil参数。但是没有分配默认值;它仍然是nil。#methodwithadefaultvalueof1000forparameter'b'defformat_args(a,b=1000)"\t#{a.ljust(30,'.')}#{b}"end#testhashdudes={};dudes["larry"]=60dudes["moe"]=nil#expectingdefaultparametervalueputs"Withoutnilcheck:"dudes.eachdo

Ruby 使用 .reject 从数组中删除 nil 值

我有一个数组:scores=[1,2,3,"",4]我想删除所有空白值。但是当我运行这个时:putsscores.reject(&:empty?)我得到一个错误:undefinedmethod`empty'for1:Fixnum如何在一步过程中从我的数组中删除不是整数的值?我正在使用Ruby1.9.3。 最佳答案 仅拒绝nil将是:array.compact 关于Ruby使用.reject从数组中删除nil值,我们在StackOverflow上找到一个类似的问题:

ruby - 在 Ruby 中将空字符串转换为 nil

我有一个名为word的字符串和一个名为infinitive的函数,这样word.infinitive在某些情况下会返回另一个字符串,否则会返回一个空字符串我正在尝试为下面的代码片段找到一个优雅的ruby​​单行表达式ifword.infinitive==""returnwordelsereturnword.infinitive如果不定式返回nil而不是"",我可以做类似的事情(word.infinitiveorword)但既然没有,我就不能利用短路OR理想情况下我想要1)我可以轻松嵌入其他代码的单个表达式2)函数不定式只被调用一次3)不要在我的代码中添加任何自定义gem或插件

ruby-on-rails - 尝试在测试中运行 rails c 时获取 config.eager_load 设置为 nil

我正在尝试运行Rails(4.1.2)控制台railscRAILS_ENV=test我得到这个:>config.eager_loadissettonil.Pleaseupdateyour>config/environments/*.rbfilesaccordingly:>>*development-setittofalse*test-setittofalse(unless>youuseatoolthatpreloadsyourtestenvironment)*production->setittotrue>>/Users/xxxxxx/.rvm/gems/ruby-2.2.2/gems

ruby - nil 的安全导航运算符 (&.)

由于Ruby2.3引入了安全导航运算符(&.),也就是一个孤独的运算符,nil对象上的行为看起来很奇怪。nil.nil?#=>truenil&.nil?#=>nil它是设计成这样的吗?还是在添加独立运算符时遗漏了一些边缘案例? 最佳答案 foo&.bar是foo&&foo.bar的简写,那么您期望表达式nil&&nil.nil的结果是什么?是? 关于ruby-nil的安全导航运算符(&.),我们在StackOverflow上找到一个类似的问题: https:/

ruby-on-rails - 如何在不重复 nil 检查的情况下避免嵌套哈希中缺少元素的 NoMethodError?

我正在寻找一种避免在深度嵌套的哈希中的每个级别检查nil的好方法。例如:name=params[:company][:owner][:name]ifparams[:company]&¶ms[:company][:owner]&¶ms[:company][:owner][:name]这需要三项检查,并且代码非常丑陋。有什么办法可以解决这个问题? 最佳答案 引入了Ruby2.3.0amethodcalleddig在Hash和Array上。name=params.dig(:company,:owner,:name)如果在任

ruby - 在 Ruby 中删除数组中的 nil 和空白字符串

我是Ruby新手,遇到了这个问题。假设我有一个这样的数组:arr=[1,2,'s',nil,'','d']我想从中删除nil和空白字符串,即最终数组应该是:arr=[1,2,'s','d']我试过compact但它给出了这个:arr.compact!arr#=>[1,2,'s','','d']doesn'tremoveemptystring.我想知道在Ruby中是否有一种聪明的方法可以做到这一点。 最佳答案 你可以这样做:arr.reject{|e|e.to_s.empty?}#=>[1,2,"s","d"]注意nil.to_s=>

ruby-on-rails - rails 如果 object.nil?那么魔术 '' 在意见?

这就是其中之一,可能太简单了,我永远找不到它,因为其他人都已经知道了。我有一些对象,我必须在我的View中检查是否为nil,所以我不会取消引用nil:或者我可以做这个变体:所以这没问题……对于大多数语言。但我觉得如果这是我能做的最好的,我仍然缺少一些Shiny的ruby或rails。 最佳答案 关于: 关于ruby-on-rails-rails如果object.nil?那么魔术''在意见?,我们在StackOverflow上找到一个类似的问题: https:/