если я верну его как [[],[]]
, он работает нормально, но в последнем случае инициализируются 3 массива, чего я хочу избежать?
Этого нельзя избежать, потому что Метод может возвращать только один объект.
Так что оборачивать объекты в [...]
очень хорошо:
def fetch_group_dept_values
if condition
[[1, 2, 3,], [4, 5]]
else
[[9, 15], [10, 11]]
end
end
Затраты на создание (небольшого) дополнительного массив незначителен.
Однако вы могли бы избежать внешнего массива, получив значений вместо их возврата:
def fetch_group_dept_values
if condition
yield [1, 2, 3,], [4, 5]
else
yield [9, 15], [10, 11]
end
end
И вызвав его через:
fetch_group_dept_values do |groups, departments|
# ...
end