Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 未定义的方法';流行音乐';用红宝石?_Arrays_Ruby_String_Methods - Fatal编程技术网

Arrays 未定义的方法';流行音乐';用红宝石?

Arrays 未定义的方法';流行音乐';用红宝石?,arrays,ruby,string,methods,Arrays,Ruby,String,Methods,我有这个密码 def longest_word(sentence) long_word = "" sentence.split(" ").sort_by {|x| x.length} long_word = sentence.pop return long_word end p longest_word("hello dogs are fast") 当我试着运行它时,我得到了一个错误,方法“pop”是未定义的。这和文件有关吗?我想我已经准备好了。你在句子上调用弹出,这是一个

我有这个密码

def longest_word(sentence)
  long_word = ""
  sentence.split(" ").sort_by {|x| x.length}
  long_word = sentence.pop

  return long_word
end

p longest_word("hello dogs are fast")

当我试着运行它时,我得到了一个错误,方法“pop”是未定义的。这和文件有关吗?我想我已经准备好了。

你在
句子上调用
弹出
,这是一个字符串

你可能想要这个:

long_word = sentence.split(" ").sort_by {|x| x.length}.pop

split
sort\u by
不以任何方式更改变量,它们返回一个新值。因此,如果您不将其分配给某个对象,
语句
仍然是一个
字符串
“你好狗很快”
,而字符串没有
#pop

sentence = sentence.split(" ").sort_by {|x| x.length}

您正在对字符串
语句
调用数组方法
pop
,而不是从
split
字符串数组中接收

顺便说一下,您的代码可以简化:

def longest_word(sentence)
  sentence.split(' ').sort_by(&:length).pop
end

p longest_word("hello dogs are fast")
#=> "hello"

您还可以使用:

sentence.split(" ").max_by(&:length)