技术开发 频道

二十分钟 教你Ruby快速入门


如何定义方法?

如何才能方便省事地随意输出字符串,而无需过多地劳烦我们的手指呢?——我们需要定义一个方法!


上面的代码中第一行“def h”标志着方法定义的开始。它告诉Ruby我们正在定义一个名为h的方法。下面一行是方法体:puts "Hello World"。最后,也就是第三行“end”通知Ruby我们完成了方法定义。Ruby的回应“=> nil”告诉我们它已经知道我们定义了此方法。

简短、重复地调用方法

现在,让我们尝试多次执行这个方法:


哈,这太容易了。在Ruby中调用某个方法只需将方法名提交给Ruby。当然,这是在方法没有参数的情况下。如果你愿意也可以添加一个空白的括号,但是这没有必要。

如果我们想对某个人说hello而不是整个“世界”(world),那该怎么做?——重定义h方法使它接收name参数。


嗯,现在看来工作正常。

字符串中的奥秘

“#{name}”是什么意思?这是Ruby在某个字符串中插入其它字符的方式。在大括号之间放入的字符串(这里是指name)将被外部的字符串代替。你也可以使用字符串类内建的capitalize方法来确保某人名字的首字母大写:


上面的代码有两个地方需要说明:

第一,我们通过无括号的方式调用方法,因为括号是可选的;

第二,这里的默认参数值为“World”。也就是说在调用方法时如果没有提供name参数,则使用默认值“World”。

进化为Greeter!

我们是否需要一个真正的问候者(greeter),他能记住你的名字、问候你、总是尊重地向你示好?那么这就最好建立一个“Greeter”类:


在上面的类代码中定义了一个称为Greeter的类和一些类方法,其中出现了一些新的“关键词”:请注意“@name”,它是类的实例变量,并对类中的所有方法(say_hi和say_bye方法)都有效。

如何让Greeter类发挥作用?现在让我们来建立一个Greeter对象并使用它!


Greeter类的实例对象g被建立后,它便接受了name参数(值为Pat)。那么我们能直接访问name吗?


看看上面的编译错误来看,这样直接访问name是行不通的。


0
相关文章