gpt4 book ai didi

ruby - children 变量数组中的这段代码是什么意思?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:55:58 25 4
gpt4 key购买 nike

def breadth_first_search(adj_matrix, source_index, end_index)
node_queue = [source_index]
puts "#{source_index} stored into queue \n"

loop do
curr_node = node_queue.pop
puts "#{curr_node} popped \n"
return false if curr_node == nil
return true if curr_node == end_index

children = (0..adj_matrix.length-1).to_a.select do |i|
adj_matrix[curr_node][i] == 1

end

puts "children: #{children}"
node_queue = children + node_queue
puts "node_queue: #{node_queue}"
end
end

我能理解它在概念上的作用,但实际的语法是我不明白的。 children 变量是一个存储元素的数组,带有循环吗?

最佳答案

变量 children 被设置为可枚举方法的结果 select

select 是一种经常在接受 block 的数组上调用的方法。返回值只是原始数组的值,其中 block 返回一个truthy对象(例如不是false,不是nil)

(0..adj_matrix.length-1)是一个范围对象,从0到adj_matrix的长度,通过转换为数组to_a(结果为 [0, 1, 2, ...])

然后该数组被 select 过滤为仅包含 adj_matrix[curr_node][i] == 1 的值。因此,如果索引 02 处的节点等于 1

那么结果就是[0, 2]

关于ruby - children 变量数组中的这段代码是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36904514/

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