多应用+插件架构,代码干净,支持一键云编译,码云点赞13K star,4.8-4.12 预售价格198元 广告
在这节习题中,我们将涵盖另外一种将变量传递给脚本的方法(所谓脚本,就是你写的 .rb 文件)。你已经知道,如果要执行` ex13.rb`,只要在命令列中执行 `ruby ex13.rb `就可以了。这句命令中的` ex13.rb` 部分就是所谓的「参数(argument)」,我们现在要做的就是写一个可以接受参数的脚本。 将下面的程序写下来,后来我将详细解释 ~~~ first, second, third = ARGV puts "The script is called: #{$0}" puts "Your first variable is: #{first}" puts "Your second variable is: #{second}" puts "Your third variable is: #{third}" ~~~ `ARGV `就是「参数变量(argument variable)」,是一个非常标准的术语。在其他的程序语言中你也可以看到它全大写的原因是因为它是一个「常数(constant)」,意思是当它被赋值之后你就不应该去改变它了。这个变数会接收当你运行 Ruby 脚本时所传入的参数。通过后面的习题你将对它有更多的了解。 你将对它有更多的了解。 第 1 行将 `ARGV` 「解包(unpack)」,与其将所有参数放到同一个变数下面,我们将每个参数赋予一个变量名称 `first` 、 `second` 以及 third。脚本本身的名称被存在一个特殊变量` $0` 里,这是我们不需要解包的部份。也许看来有些怪,但「解包」可能是最好的描述方式了。它的涵义很简单:「将` ARGV` 中的东西解包,然后将所有的参数依次赋予左边的变量名称」。 接下来就是正常的输出了。 # 你应该看到的结果 * * * * * 用下面的方法执行你的程序: `ruby ex13.rb first 2nd 3rd` 如果你每次使用不同的参数执行,你将看到下面的结果: ~~~ $ ruby ex13.rb first 2nd 3rd The script is called: ex13.rb Your first variable is: first Your second variable is: 2nd Your third variable is: 3rd $ ruby ex13.rb cheese apples bread The script is called: ex13.rb Your first variable is: cheese Your second variable is: apples Your third variable is: bread $ ruby ex13.rb Zed A. Shaw The script is called: ex13.rb Your first variable is: Zed Your second variable is: A. Your third variable is: Shaw ~~~ 你其实可以将「first」、「2nd」、「3rd」替换成任意东西。 ~~~ ruby ex13.rb stuff I like ruby ex13.rb anything 6 7 ~~~ # 加分习题 * * * * * 1. 传三个以下的参数给你的脚本。当有缺少参数时哪些数值会被使用到? 2. 再写两个脚本,其中一个接收更少的参数,另一个接收更多的参数。在参数解包时给它们取一些有意义的变数名称。 3. 结合 `gets.chomp `和 `ARGV` 一起使用,让你的脚本从用户手上得到更多输入。