在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Ruby是真正的面向对象语言,你所操作的一切东西都是对象,它们返回的操作结果也是对象。 在Ruby里,实例由类的构造函数创建。标准的构造函数是new。 song1 = Song.new("Ruby Tuesday") 虽然这些实例由同一个类创建,但它们各自有着唯一的特征。 首先,它们有唯一的对象标识(简单理解为对象ID)。 其次,你能定义实例变量,并且变量的值在每个实例中是唯一的。 这些实例变量保存着对象的引用。例如,每首歌可能会有一个实例变量保存歌曲的标题。 在类里面,你可以定义实例方法。方法是一个功能块,它能被类内部或外部(取决于方法的访问约束)调用。 实例方法能够访问实例变量和获取对象的引用。 方法通过向对象发送消息来执行。信息包含方法名和方法所需的参数。 当一个对象收到消息时,它查找自己的类中相应的方法。如果找到,则调用这个方法,如果没找到。。。 这些方法的业务逻辑听起来比较复杂,但其实使用起来很自然。让我们先看一些方法的调用。 "gin joint".length -> 9 这里Ruby和大部分语言的不同之处值得我们注意。在java中,要得到一个数字的绝对值需要调用另一个方法并把数字传进去。 你可能会这样写: number = Math.abs(number) // Java code 在Ruby中,数字内置有转换成绝对值的能力。你只要发送消息abs给数字,它就会自动执行了。 number = number.abs 当学习一门新的语言时,许多人都不会喜欢阅读那些枯燥的语法,那么就让我们直接进入正题吧。 我们先从一个简单的Ruby程序开始,我们将写一个方法,它返回个人的问候语。然后我们多次调用这个方法。 def say_goodnight(name) 就像这个例子所显示的那样,Ruby的语法是很简洁的。当代码以行为结束时,后面不需要分号。 Ruby使用#号注释单行,代码的布局几乎由你来决定。 方法使用关键字def定义,紧跟着的是方法名(如say_goodnight)和括号之间的参数。 实际上,括号是可选的,只是我们都喜欢使用它们。 Ruby不需要使用花括号来限定方法体的边界。取而代之的是,使用关键字end表示方法体结束。 这行代码代码puts say_goodnight("JohnBoy") 包含两个方法的调用,一个是say_goodnight另一个是puts。 为什么第一个方法的参数需要包含在括号内而第二个方法不用呢?实际上它完全取决于个人爱好。 下面的代码是等效的。 puts say_goodnight("JohnBoy") 这里演示了Ruby的一些string对象。你能通过多种途径来创建string对象, 但通常用得最多的可能是字符串:一连串使用单引号或双引号标记的字符。 这两种方式的不同之处在于Ruby对于string处理的构造上。 使用单引号时,Ruby处理的很少,除了一些字符串转换的异常外。 使用双引号是,Ruby所用的处理工作很多。首先,它查找并替换以反斜线开始的字符, 并把它们替换成一些二进制值。比较常用的是\n,它被替换为换行符。 puts "And good night,\nGrandma" 其次,Ruby会运行双引号里面插入的表达式。在字符串中,#{expression}会被替换为express的值, 我们可以使用这个来重写刚才的方法。 def say_goodnight(name) 简单地,当expression是全局,实例或类变量时,不需要使用花括号包围。 $greeting = "Hello" # $greeting is a global variable 最后,我们还可以进一步的简化这个方法。Ruby方法的返回值是最后的表达式计算的值,因此我们可以去掉result这个临时变量。 def say_goodnight(name) Ruby使用一种简便的用法用帮助我们区分一个名字:名字的第一个字符指示它的用途。 局部变量,方法参数和方法名都应用以小写字母或下划线开头。全局变量的前缀是美元符号($), 实例变量使用"at"符号(@)开始,类变量则以两个"at"变量(@)开始。最后,类名,模块名和常量都以大写字母开头。 为方便起见,方法名和实例变量的多个单词之间使用下划线连接,类名使用混合大小写(每个单词以大写字母开头)。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论