在Ruby中为什么$a和@a返回的是nil?

Python014

在Ruby中为什么$a和@a返回的是nil?,第1张

ruby中带“!"和不带"!"的方法的最大的区别就是带”!"的会改变调用对象本身了。比方说str.gsub(/a/,'b'),不会改变str本身,只会返回一个新的str。而str.gsub!(/a/,'b')就会把str本身给改了。但是gsub和gsub!还有另外一个不同点就是,gsub不管怎么样都会返回一个新的字符串,而gsub!只有在有字符被替换的情况下才会返回一个新的字符串,假如说没有任何字符被替换,gsub!只会返回nil.example:'abc'.gsub(/a/,'b')#返回'bbc''abc'.gsub!(/a/,'b')#返回'bbc''abc'.gsub(/d/,'a')#返回'abc''abc'.gsub!(/d/,'a')#返回nil

.all?这是一个ruby方法,他的返回结果只有两个,true或者false,判断的是数组中每一个元素都是true的就返回true,只要有一个不是true就返回false,如[nil,22].all?返回的就是false。还有就是判断数组遍历运算过程中,每一个结果是不是true,如[1,2,3].all?{|w| w >1}这个的结果就是false。

你的例子中,作为判断对象的是一个空数组,不执行后面的代码,也没有一个元素是false的,所以返回的是true,这是我的见解