gpt4 book ai didi

ruby - 如何将语句作为参数传递给方法中的 block ?

转载 作者:数据小太阳 更新时间:2023-10-29 08:28:10 26 4
gpt4 key购买 nike

我正在尝试找出如何将语句作为方法参数传递 - 用作 block 过滤条件的一部分。例如,我有以下代码:

def method
other_method.persons.each do |ped|

next if ped.first_name.nil? or ped.last_name.nil?

puts ped.id
puts ped.full_name
end
end

我希望能够执行的操作如下(因此我可能会更改方法中使用的过滤条件)。是否可以通过参数传递包含 block 引用的语句?:

def method(statement)
other_method.persons.each do |ped|

next if statement

puts ped.id
puts ped.full_name
end
end

我很欣赏这方面的指导。

最佳答案

您传递的不是“语句”,而是 block 。传递的 block 通过 yield 调用或捕获到 proc 中并使用 Proc#call 调用。

def method
other_method.persons.each do |ped|
next if yield(ped)

puts ped.id
puts ped.full_name
end
end

method { |ped| ped.first_name.nil? or ped.last_name.nil? }

关于ruby - 如何将语句作为参数传递给方法中的 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13421988/

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