我在阅读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
我的问题是块的第二个参数"_"是什么意思?似乎它没有在块中使用.
谢谢
它是一个习惯用于表示未使用绑定到'_'的参数,即使它需要传递给块/方法.
例:
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' 的约定.
这意味着你很酷,因为你一直在涉及功能性编程,我相信,这个成语在哪里...