0

Guardfile の例から:

watch(%r{^app/(.+)\.rb})    { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^lib/(.+)\.rb})    { |m| "spec/lib/#{m[1]}_spec.rb" }

の値は何をm表していますか? 完全パスと相対パスを格納する、長さ2の配列のようです...

どのようにm生成されますか?それはGuardまたはRubyから来ていますか?

4

2 に答える 2

2

m[1]正規表現一致の最初のキャプチャ グループになります。そして正規表現から、それはファイルの名前です(拡張子なし)。

これは実際には README で説明されています。

guard :rspec do
  watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
end

この例では、正規表現キャプチャ グループ (.+) を使用して、lib フォルダー内のファイル変更を spec フォルダー内のテスト ケースに変換します。正規表現の監視パターンは Regexp#match で照合されます。

于 2012-10-18T15:09:24.793 に答える
1

mは正規表現からの一致です。詳細については、 http://www.ruby-doc.org/core-1.9.3/Regexp.html#method-i-matchを参照 してください。

基本的に、m [1]は、一致したファイルの名前を取得し、対応する仕様を実行するために使用されます。

于 2012-10-18T15:07:06.843 に答える