Ruby错误:未定义的方法“length”
我使用ruby docs的网站示例来确定数组中最长的字符串长度,下面是我使用的代码:Ruby错误:未定义的方法“length”,ruby,methods,Ruby,Methods,我使用ruby docs的网站示例来确定数组中最长的字符串长度,下面是我使用的代码: longest = twoOfArray.inject(0) {|memo,word| memo.length > word.length ? memo : word} 根据docs网站,这应该告诉我数组中最长单词的长度。但是,我得到一个错误,告诉我“.length”是一个未定义的方法。我做错了什么 我使用的是Ruby 1.9.3版。您不应该在inject方法中传递第一个参数 正确的代码是 longe
longest = twoOfArray.inject(0) {|memo,word| memo.length > word.length ? memo : word}
根据docs网站,这应该告诉我数组中最长单词的长度。但是,我得到一个错误,告诉我“.length”是一个未定义的方法。我做错了什么
我使用的是Ruby 1.9.3版。您不应该在inject方法中传递第一个参数 正确的代码是
longest = twoOfArray.inject {|memo,word| memo.length > word.length ? memo : word}
若并没有参数,那个么第一个元素将是初始的memo对象。对不起,我并没有注意到你们在我的第一个答案中需要什么 如果需要确定最长字符串长度,则需要块返回长度。即
longest = twoOfArray.inject(0) {|memo,word| memo > word.length ? memo : word.length }
请编辑以给出整个错误消息,并显示twoOfArray的外观。另一种方法是{| e | e.size}的twoOfArray.max_。是Ruby命名约定的总结。变量应为小写字母,可选地用下划线分隔。尺寸和长度是同义词。是的,这似乎奏效了,谢谢!如果你不介意的话,我还有一个问题。我需要使用最长变量的值并将其放入printf:printf%-*s。整行代码如下所示:twoOfArray.each{k,v | put%-.*s%[最长]+'*'*v}。然而,它给了我一个错误,指出“&”太少的错误。我做错了什么?