Ruby错误:未定义的方法'长度'

时间:2014-09-14 20:37:28

标签: ruby methods

我正在使用ruby-docs'网站示例确定数组中最长的字符串长度,这是我正在使用的代码:

longest = twoOfArray.inject(0)  {|memo,word| memo.length > word.length ? memo : word}

根据docs网站,这应该告诉我数组中最长单词的长度。但是,我收到一个错误,告诉我' .length'是一种未定义的方法。我做错了什么?

我使用的是Ruby 1.9.3版。

2 个答案:

答案 0 :(得分:0)

您不应该在inject方法中传递第一个参数。

正确的代码将是

longest = twoOfArray.inject {|memo,word| memo.length > word.length ? memo : word}

如果没有参数,则第一个元素将是初始memo对象。

答案 1 :(得分:0)

对不起,我在第一次回答时没有注意到你的需要。

如果需要确定最长的字符串长度,则需要块返回长度。即。

longest = twoOfArray.inject(0) {|memo,word| memo > word.length ? memo : word.length }