我在阅读ZenTest源代码时遇到了这个问题:
以下是add_mapping方法的定义:
def add_mapping(regexp, &proc)
@test_mappings << [regexp, proc]
end
Run Code Online (Sandbox Code Playgroud)
在Autottest.initailize()
,add_method
被调用为实现添加映射.
self.add_mapping(/^lib\/.*\.rb$/) do |filename, _|
possible = File.basename(filename).gsub '_', '_?'
files_matching %r%^test/.*#{possible}$%
end
Run Code Online (Sandbox Code Playgroud)
我的问题是块的第二个参数"_"是什么意思?似乎它没有在块中使用.
谢谢
它是一个习惯用于表示未使用绑定到'_'的参数,即使它需要传递给块/方法.
例:
def blah
yield 1,2
end
blah {|a,b|
puts a
# b is never used
}
Run Code Online (Sandbox Code Playgroud)
比较相同:
blah {|a,_|
puts a
}
Run Code Online (Sandbox Code Playgroud)
请注意,'_'是ruby中完全合法的变量名,因此两个版本相同,以下也适用:
blah {|a,_|
puts _
}
Run Code Online (Sandbox Code Playgroud)
使用'_'只不过是i
用于计数器,'x'和'y'或'foo'和'bar' 的约定.
这意味着你很酷,因为你一直在涉及功能性编程,我相信,这个成语在哪里...