.length方法的Ruby错误
我的代码遇到了错误,我不知道为什么。我正在尝试创建一个返回字符串中最长单词的函数。我唯一可以使用的内置Ruby方法是.split。我的代码在下面,我收到的错误在下面。如果您能帮我解决这个问题,我们将不胜感激 提前谢谢.length方法的Ruby错误,ruby,Ruby,我的代码遇到了错误,我不知道为什么。我正在尝试创建一个返回字符串中最长单词的函数。我唯一可以使用的内置Ruby方法是.split。我的代码在下面,我收到的错误在下面。如果您能帮我解决这个问题,我们将不胜感激 提前谢谢 def longest_word(sentence) sentence1 = sentence.split longest_word = "" for i in 0...sentence1.length if i.length > longest_w
def longest_word(sentence)
sentence1 = sentence.split
longest_word = ""
for i in 0...sentence1.length
if i.length > longest_word.length
longest_word = i
end
end
return longest_word
end
longest_word("one three")
错误如下:
undefined method `length' for 0:Fixnum
(repl):15:in `block in longest_word'
(repl):14:in `times'
(repl):14:in `longest_word'
(repl):29:in `<main>'
0:Fixnum的未定义方法'length'
(回复):15:in‘block in longest_word’
(答复):14:在《泰晤士报》中
(回复):14:在“最长的单词”中
(答复):29:在"中"
问题是,当您将“1-3”作为参数传递时,您正在迭代整数0,1,2
不幸的是,您不能直接在integer/fixnumi
上调用length
方法。相反,您希望在数组sentence1
的索引i
处的元素上调用它,如果这样做有意义的话
像这样的东西应该适合你:
def longest_word(sentence)
sentence1 = sentence.split
longest_word = ""
for i in 0...(sentence1.length - 1)
if sentence1[i].length > longest_word.length
longest_word = sentence1[i]
end
end
return longest_word
end
或者,更好
def longest_word(sentence)
sentence.split.max_by(&:length)
end
(从中偷来)问题是,当您将“1-3”
作为参数传递时,您正在迭代整数0,1,2
不幸的是,您不能直接在integer/fixnumi
上调用length
方法。相反,您希望在数组sentence1
的索引i
处的元素上调用它,如果这样做有意义的话
像这样的东西应该适合你:
def longest_word(sentence)
sentence1 = sentence.split
longest_word = ""
for i in 0...(sentence1.length - 1)
if sentence1[i].length > longest_word.length
longest_word = sentence1[i]
end
end
return longest_word
end
或者,更好
def longest_word(sentence)
sentence.split.max_by(&:length)
end
(从中窃取)您收到错误,因为语句.length
返回一个数组,您正在执行i.length
操作,即检查Fixnum
的长度。
将代码更改为以下内容:
def longest_word(sentence)
sentence1 = sentence.split
longest_word = ""
sentence1.each do |word|
longest_word = word if word.length > longest_word.length
end
return longest_word
end
longest_word("one three")
出现错误的原因是语句.length
返回一个数组,您正在执行i.length
操作,即检查Fixnum
的长度。
将代码更改为以下内容:
def longest_word(sentence)
sentence1 = sentence.split
longest_word = ""
sentence1.each do |word|
longest_word = word if word.length > longest_word.length
end
return longest_word
end
longest_word("one three")
不需要显式的返回
,缩进也会被破坏,但是每个
的使用都是一个巨大的改进。您还可以将“if”语句重写为一行longest\u word=word if word.length>longest\u word.length
感谢您的帮助和信息!我真的很感激。不需要显式的返回
,缩进也会被破坏,但是每个
的使用都是一个巨大的改进。您还可以将“if”语句重写为一行longest\u word=word if word.length>longest\u word.length
感谢您的帮助和信息!我真的很感激。非常感谢你为我解释这件事。非常感谢你为我解释这件事。