Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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
Ruby “红宝石”;每一个;方法_Ruby_Arrays_Iterator - Fatal编程技术网

Ruby “红宝石”;每一个;方法

Ruby “红宝石”;每一个;方法,ruby,arrays,iterator,Ruby,Arrays,Iterator,为什么下面的方法返回的不是字符串的长度,而是字符串 def length_finder(input_array) lengths = [] input_array.each do |string| lengths << string.length end end >> array = %w{ lol testtest l} => ["lol", "testtest", "l"] >> length_finder(array) =&g

为什么下面的方法返回的不是字符串的长度,而是字符串

def length_finder(input_array)
  lengths = []
  input_array.each do |string|
    lengths << string.length
  end
end

>> array = %w{ lol testtest l}
=> ["lol", "testtest", "l"]
>> length_finder(array)
=> ["lol", "testtest", "l"]

这来自于上的练习,因为
每个
都返回接收器
输入数组
,这是一个字符串数组。

请尝试此代码

def length_finder(input_array)
  lengths = []
  input_array.each do |string|
    lengths << string.length
  end
  return lengths
end

以“input_array.each”开头的行上的缩进表示“end”语句与.each方法连接在一起。因为它是在缩进较少的范围内定义的,所以长度仍然由缩进最多的行填充

lengths << string.length

length但是
length
每个
返回的内容无关。我仍然不明白为什么行
的长度是你期望的长度。在最后一个“结束”之前添加长度,该变量将被返回<代码>长度
与每个
返回的内容无关。您期望的
length是什么注意:您可以将
input_array.map{| item | item.length}
写成
input_array.map(&:length)
def length_finder(input_array)
  input_array.map {|item| item.length}
end
lengths << string.length