gpt4 book ai didi

Ruby:应该从子数组返回最大值数组的递归函数问题

转载 作者:太空宇宙 更新时间:2023-11-03 17:44:48 25 4
gpt4 key购买 nike

以下函数旨在接收数组数组并返回其子数组的最大值。

def temp(list)
if list.all? { |i| i.kind_of?(Array) }
return(list.each { |j| j.max })
else
return(list)
end
end

所以给定一个列表和这样的函数调用:

x = [[1, 2], [3, 4]]

temp(x)

它应该返回 [2, 4],但它只返回原始数组 [[1, 2], [3, 4]]。我想知道这里出了什么问题。

谢谢

最佳答案

each 对数组的每个元素进行操作,然后返回(原始)数组。你想要的方法是 map:

def temp(list)
if list.all? {|i| i.kind_of?(Array) }
list.map {|j| j.max }
else
list
end
end

x = [[1, 2], [3, 4]]
temp(x)
# => [2, 4]

但是,显式类型检查在 Ruby 中并不是惯用的,它更喜欢 duck typing。不要检查 i 是否是一个数组;只需检查它是否响应 max:

def temp(list)
return list unless list.all? {|i| i.respond_to?(:max) }
list.map(&:max)
end

关于Ruby:应该从子数组返回最大值数组的递归函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41905847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com