使用Ruby注入时的Nil类
发布时间:2020-12-17 04:28:48 所属栏目:百科 来源:网络整理
导读:我是 Ruby的新手,我在使用inject方法时遇到了一个奇怪的问题. 当我做: (1..10).inject(0) {|count,x| count + 1} 结果是10,正如预期的那样.但是,当我这样做 (1..10).inject(0) {|count,x| count + 1 if (x%2 == 0)} 我收到一个错误: NoMethodError: undefi
我是
Ruby的新手,我在使用inject方法时遇到了一个奇怪的问题.
当我做: (1..10).inject(0) {|count,x| count + 1} 结果是10,正如预期的那样.但是,当我这样做 (1..10).inject(0) {|count,x| count + 1 if (x%2 == 0)} 我收到一个错误: NoMethodError: undefined method `+' for nil:NilClass from (irb):43 from (irb):43:in `inject' from (irb):43:in `each' from (irb):43:in `inject' from (irb):43 我真的不明白为什么(大概)计数在第二个例子中是零,但不是第一个.在任何情况下,我如何使用注入计算从1到10的均衡? 解决方法
当条件不为真时,表达式计数1 if(x%2 == 0)返回nil,将该计数设置为,因为这是inject方法的性质.
您可以通过返回计数1来修复它,当它是偶数时,只计算它不是: (1..10).inject(0) { |count,x| x % 2 == 0 ? count + 1 : count } 一个完全不同的解决方案是使用select来选择偶数并使用Array#length方法对它们进行计数. (1..10).select { |x| x % 2 == 0 }.length (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |