试图弄清楚我是否可以在不创建新对象的情况下将参数传递给类。我试过如下
文件名:display.rb
class Print
def initialize(name)
@name = name
end
def disp
p @name
end
end
init = Print.new(ARGV[0])
init.disp
终端
> ruby display.rb "ross"
# => "ross"
[编辑] 我不想在文件中调用init = Print.new(ARGV[0])
和init.disp
;相反,我想将它作为命令行参数ruby display.rb "ross"
传递,它应该显示名称。我怎样才能做到这一点?
答案 0 :(得分:1)
向脚本添加选项解析器,然后从选项解析器中正确实例化Print类。选项解析器将处理ARGV数组中的读取工作,您可以按照预期的方式使用Print类。
答案 1 :(得分:1)
您可以使用allocate方法创建类的对象。
但我认为你真的在问你是否可以创建并调用类方法。
Print.disp(ARGV[0])
肯定可以完成。
class Print
def self.disp(something)
puts something
end
end
Print.disp(ARGV[0])
你会这样称呼它:
$ ruby display.rb Ross
它会输出:
Ross
答案 2 :(得分:1)
如果您没有使用类,只需运行直接的Ruby代码,就可以调用ruby display.rb "ross"
。例如,假设您的文件如下所示:
puts ARGV[0]
您现在可以将其作为ruby display.rb "ross"
运行,并且您的参数将被打印。
另一种选择是设置你的功能:
class Print
def self.disp(yourinput)
puts yourinput
end
end
在这种情况下,您可以直接从类中调用函数,而无需实例化该类。对于您想要实现的目标,这可能是您最好的解决方案。
Print.disp(ARGV[0])
答案 3 :(得分:1)
这是一个想法。之后加载rb文件并执行一些内联ruby:
ruby -r"./display.rb" -e "Print.new('ross').disp"