gpt4 book ai didi

ruby - "_"Ruby block 参数

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

我在阅读 ZenTest 源代码时遇到了这个问题:

这里是add_mapping方法的定义:

def add_mapping(regexp, &proc)
@test_mappings << [regexp, proc]
end

Autottest.initailize() 中,调用 add_method 为实现添加映射。

self.add_mapping(/^lib\/.*\.rb$/) do |filename, _|
possible = File.basename(filename).gsub '_', '_?'
files_matching %r%^test/.*#{possible}$%
end

我的问题是 block 的第二个参数“_”是什么意思?似乎它没有在 block 中使用。

谢谢

最佳答案

这是一个习惯用法,用于指示绑定(bind)到“_”的参数未被使用,即使它需要传递给 block /方法也是如此。

例子:

def blah
yield 1,2
end

blah {|a,b|
puts a
# b is never used
}

比较相同的:

blah {|a,_|
puts a
}

请注意,'_' 在 ruby​​ 中是一个完全合法的变量名,因此这两个版本是相同的,以下也适用:

blah {|a,_|
puts _
}

使用 '_' 只不过是一种约定,就像将 i 用于计数器、'x' 和 'y' 或 'foo' 和 'bar' 一样。

这意味着你很酷,因为你一直在涉足函数式编程,我相信这就是这个习语的起源......

关于ruby - "_"Ruby block 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/471952/

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