如何编写你的第一个Ruby程序
引言
「你好,世界!」程序是计算机编程中的经典传统。对于初学者来说,这是一个简单而完整的首个程序,也是确保你的环境配置正确的好方式。
这个教程将引导您使用Ruby创建这个程序。然而,为了使程序更加有趣,您将修改传统的“Hello, World”程序,以便询问用户的姓名。然后,您将在问候语中使用这个姓名。当您完成教程时,运行程序时将会看到以下的效果。
Please enter your name. Sammy Hello, Sammy! I’m Ruby!
先决条件
您应该在您的计算机上设置一个本地的Ruby开发环境。按照以下其中一篇教程的步骤来进行设置:
- How to Install Ruby and Set Up a Local Programming Environment on macOS
- How to Install Ruby and Set Up a Local Programming Environment on Ubuntu 16.04
- How to Install Ruby and Set Up a Local Programming Environment on Windows 10
步骤1 — 编写基本的“你好,世界!”程序
要编写“Hello, World!”程序,需要打开一个命令行文本编辑器,如nano,然后创建一个新文件:
- nano hello.rb
一旦文本文件在终端窗口中打开,你将输入你的程序。
puts "Hello, World!"
我们来分解这段代码的不同组成部分。
puts是一个Ruby方法,用于命令计算机将一些文本打印到屏幕上。
接下来,puts方法后面跟着一串用引号括起来的字符——”Hello, World!”。任何位于引号内的字符被称为字符串。当程序运行时,puts方法会将这个字符串打印到屏幕上。
一些方法,例如puts方法,已经默认包含在Ruby中。这些内置方法在创建Ruby程序时随时可用。您也可以自己定义方法。
通过键入“控制”和“X”键来保存并退出nano,当提示保存文件时,按y然后按ENTER。
我们来试试你的程序吧。
步骤2 — 运行一个Ruby程序
写好了你的“Hello, World!”程序后,你就可以运行这个程序了。你将使用ruby命令,后面跟着刚刚创建的文件的名称。
- ruby hello.rb
该程序将执行并显示输出结果。
Hello, World!
让我们来探索实际发生了什么。
运行ruby命令启动了Ruby解释器。Ruby解释器读取您指定的文件并评估其内容。它通过调用puts函数来执行行puts “你好,世界!”。Hello, World!的字符串值被传递给该函数。
在这个例子中,字符串“Hello, World!”也被称为参数,因为它是被传递给方法的一个值。
由于引号告诉Ruby它们包含一个字符串,所以Hello,World!两侧的引号没有被打印到屏幕上。引号标志着字符串的开始和结束位置。
这个程序可以运行,但是你可以使它更加互动。让我们一起来探索一下如何实现互动。
第三步 — 提示输入信息
每次你运行程序时,它都会产生相同的输出。让我们提醒运行程序的人输入他们的姓名。然后,你可以在输出中使用这个姓名。
不要修改你现有的程序,而是在nano编辑器中创建一个名为greeting.rb的新程序。
- nano greeting.rb
首先,添加这行代码,提示用户输入他们的姓名:
puts "Please enter your name."
再一次,你使用puts方法将一些文本打印到屏幕上。
现在添加这行代码来获取用户的输入:
puts "Please enter your name."
name = gets
接下来的一行有点复杂。让我们来分解一下。
“gets方法告诉计算机等待键盘输入。这会暂停程序,允许用户输入任何文本。当用户按下键盘上的ENTER键时,程序将继续执行。所有按键,包括ENTER按键,都将被捕获并转换为一串字符。”
你想在程序的输出中使用这些字符,所以你将字符串保存到一个名为“名字”的变量中。Ruby会将该字符串存储在计算机的内存中,直到程序完成。
最后,添加这行代码来打印输出结果。
puts "Please enter your name."
name = gets
puts "Hi, #{name}! I'm Ruby!"
你再次使用puts方法,但这一次你使用了一种叫做字符串插值的Ruby特性,它允许你将赋值给一个变量的值放在字符串内。你将得到保存在名为name的变量中的值,这个值应该是用户的名字。
按下CTRL+X保存并退出nano,当提示保存文件时按下y,然后按下回车键。
现在用这个命令运行程序:
- ruby greeting.rb
当系统提示您输入姓名时,请输入并按回车键。输出结果可能与您的期望不完全一致。
Please enter your name. Sammy Hi, Sammy ! I’m Ruby!
嗨 雷比!我是萨米!
这个程序捕捉到了你输入的所有按键,包括你按下回车键来告诉程序继续执行的按键。在字符串中,按下回车键会生成一个特殊字符,用来创建新的一行。程序的输出正是按照你的指示进行,显示了你输入的文本,包括那个新的一行。只是这不是你想要的结果。但是你可以修复它。
打开你的编辑器中的greeting.rb文件。
- nano greeting.rb
在你的程序中找到这行。
name = gets
并修改它,使其看起来像这样:
name = gets.chop
这在我们用gets捕获的字符串上使用了Ruby的chop方法。chop方法会将字符串的最后一个字符删除。在这种情况下,它删除了我们按下回车键时创建的字符串末尾的换行符。
保存并退出nano。按下CTRL+X,然后在提示保存文件时按下y。
再次运行程序
- ruby greeting.rb
这次,当你输入你的名字并按下回车后,你会得到预期的输出。
Please enter your name. Sammy Hi, Sammy! I’m Ruby!
你现在有一个 Ruby 程序,可以接受用户输入并将其打印到屏幕上。
结论
现在你已经知道如何提示输入、处理结果和显示输出了,尝试进一步扩展你的程序吧。例如,询问用户最喜欢的颜色,并让程序说它最喜欢的颜色是红色。你甚至可以尝试使用这种技巧来创建一个简单的疯狂填词程序。