如果我们想说很多次“Hello”而不让手指感到疲劳怎么办?我们需要定义一个方法!
代码 def hi
开始定义方法。它告诉 Ruby 我们正在定义一个方法,它的名字是 hi
。下一行是方法的主体,与我们之前看到的那行相同:puts "Hello World"
。最后,最后一行 end
告诉 Ruby 我们已经完成了方法的定义。Ruby 的响应 => :hi
告诉我们它知道我们已经完成了方法的定义。对于 Ruby 2.0 及更早版本,此响应可能是 => nil
。但是,这在这里并不重要,所以我们继续。
方法简短而重复的生命
现在让我们尝试运行几次该方法
嗯,这很简单。在 Ruby 中调用方法就像向 Ruby 提及它的名字一样简单。如果该方法不接受参数,那么这就是您所需要的。您可以添加空括号(如果需要),但不是必须的。
如果我们想向一个人说 hello,而不是向全世界说 hello 怎么办?只需重新定义 hi
以接受一个名称作为参数即可。
所以它工作了……但让我们花点时间看看这里发生了什么。
在字符串中占位
#{name}
这部分是什么?这是 Ruby 将某些内容插入到字符串中的方式。花括号之间的部分被转换为字符串(如果它还不是字符串),然后在该点替换到外部字符串中。您也可以使用它来确保某人的名字正确地大写
这里还有一些其他技巧需要注意。一个是我们再次在没有括号的情况下调用该方法。如果您所做的事情很明显,则括号是可选的。另一个技巧是默认参数 World
。它的意思是“如果未提供名称,则使用默认名称 "World"
”。
进化为问候者
如果我们想要一个真正的问候者,一个会记住你的名字、欢迎你并且总是尊重你的人。您可能需要为此使用一个对象。让我们创建一个“Greeter”类。
这里的新关键字是 class
。这定义了一个名为 Greeter 的新类以及该类的一系列方法。还要注意 @name
。这是一个实例变量,并且可用于该类的所有方法。正如您所看到的,它被 say_hi
和 say_bye
使用。
那么我们如何让这个 Greeter 类开始工作呢?创建一个对象。