MST
星途 面试题库

面试题:Ruby参数解包在复杂场景中的应用

假设有一个包含多个子数组的数组,每个子数组又包含多个数字。例如:[[1, 2], [3, 4, 5], [6]]. 请编写一个Ruby方法,使用参数解包技巧,将所有子数组中的数字作为独立参数传递给另一个计算平方和的方法,并返回最终的平方和结果。详细说明参数解包在这个过程中是如何实现的。
22.1万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试
def sum_of_squares(*nums)
  nums.sum { |num| num**2 }
end

def calculate_total_square_sum(arrays)
  sum_of_squares(*arrays.flatten)
end

参数解包实现说明

  1. arrays.flatten:这一步将多维数组 [[1, 2], [3, 4, 5], [6]] 转换为一维数组 [1, 2, 3, 4, 5, 6]
  2. *arrays.flatten:这里使用了参数解包技巧。* 操作符将 arrays.flatten 这个数组解包,把数组中的每个元素作为独立的参数传递给 sum_of_squares 方法。例如,如果 arrays.flatten 的结果是 [1, 2, 3],经过参数解包后,就相当于调用 sum_of_squares(1, 2, 3)。这样,sum_of_squares 方法就能对每个独立的数字进行平方和计算。