使用命令行选项调用方法

Use a command line option to call a method

所以我想这与我的上一个 有点相关,但我想知道是否有一种方法可以通过使用命令行选项来调用方法。假设您有这样的方法:

def b
puts "Hello brian"
end

有没有办法写这样的东西:

ruby mine.rb -b 

得到这个

Hello brian

我已经尝试在线查找并发现了 OptionParser,但我还没有发现任何涉及 OptionParser 调用先前创建的方法的内容。

有很多方法可以做到这一点,具体取决于用例。下面的代码取自 Ruby docs 添加了额外的方法。

实际上,您可能需要一个 class 来处理不同的选项并封装方法,而不是将它们放在文件范围内。

#!/usr/bin/env ruby

require 'optparse'

options = {}
OptionParser.new do |opts|
  opts.banner = "Usage: example.rb [options]"

  opts.on("-b", "Run method 'b'") do |v|
    options[:b] = true
  end
end.parse!

def b
  puts "Hello Brian"
end

if options[:b]
  b
end

我还在顶部添加了一个 shebang,它会自动调用 ruby。只要您的脚本文件是可执行的,您就可以直接调用它(即 ./mine.rb -b)。