当前位置:  开发笔记 > 后端 > 正文

Ruby块的"_"参数

如何解决《Ruby块的"_"参数》经验,为你挑选了1个好方法。

我在阅读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

我的问题是块的第二个参数"_"是什么意思?似乎它没有在块中使用.

谢谢



1> a2800276..:

它是一个习惯用于表示未使用绑定到'_'的参数,即使它需要传递给块/方法.

例:

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' 的约定.

这意味着你很酷,因为你一直在涉及功能性编程,我相信,这个成语在哪里...

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有