gpt4 book ai didi

Ruby 注入(inject)奇怪的行为

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

我正在尝试生成给定数组的完整排列。例如,如果输入是 fact(2, ['A', 'B']),则输出应该是 [["A", "A"], ["B ", "A"], ["A", "B"], ["B", "B"]]

def fact(n, arr)
return [[]] if n == 0
nxt = fact(n - 1, arr).freeze
arr.inject([]){ |result, elem| nxt.each { |x| result.push(x + [elem]); result } }
end

但是,当我尝试使用“更函数式编程”的方式来执行此操作时,发生了一些奇怪的事情。解释器提示 Untitled 4.rb:4:in 'push': can't modify frozen Array (RuntimeError)。我实际上是在尝试修改名为 result 的注入(inject)数组,它如何更改 nxt

最佳答案

它是内置的,而且是惰性的:

perms = ['A', 'B'].repeated_permutation(2)
#use the resulting enumerator like this:
perms.each{|perm| p perm}

关于Ruby 注入(inject)奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821309/

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