源代码
Ruby 源代码通常使用 UTF-8、ASCII 等格式,它是一种基于行的语言,如果我们将多行代码写在一个物理行,那么可以使用 ";" 来分隔。
a = Class1.new(123); b = Class1.new(123)
我们也可以使用连接符 "\" 将单行代码写成多行。如果分隔位置以操作符结尾,则连接符可省略。 (注意!"\" 后面不能包含任何字符,包括空格和注释,否则会导致语法错误。)
x1 = 1 + 2 \ + 3 x2 = 1 + 2 + 3
单行注释以 # 开始,直到物理行结束;多行注释以 "=begin" 行开始,"=end" 行结束。
=begin Copyright (c) RainTrail Studio. China All Rights Reserved! 2007 =end a = Class1.new(123) # new object;
每个源代码文件都可以声明自己被装载和程序执行结束后要执行的代码块。
BEGIN { puts "Start..." } END { puts "End!" }
BEGIN 和 END 代码块都可以定义多次。(Eclipse / RDT 环境下,似乎不能将 "{" 写在单独行,否则会出错。)
环境变量
Ruby 程序在执行时,会提供一些环境变量供程序代码读取。
$0 : 被执行程序的名字,通常是程序的文件名。
$* : 程序执行参数。
__FILE__ : 当前源文件的名字。
__FILE__ 和 $0 通常组合起来使用,用于判断当前文件是否是直接被执行的主程序文件。
if __FILE__ == $0 puts "Main..." end
Object
和多数语言一样,Object 是 Ruby 所有类的祖先,它的方法自然会被所有的子类继承。
obj.object_id() : 输出对象唯一标识符。
obj.class() : 返回对象类型(type)。
obj.eql?(obj2) : 判断两个对象值是否相同。
obj.equal?(obj2) : 判断两个对象 ID 是否相同。
obj.instance_of?(class) : 判断对象是否指定类的实例。
obj.kind_of?(class) : 判断对象是否指定类或其子类的实例。
obj.nil?() : 判断对象引用是否为空。
obj.to_s() : 返回对象字符串表示。
class Class1 def initialize(i) @i = i end end a = Class1.new(123) b = Class1.new(123) puts a.object_id puts a.class puts a.eql?(b) puts a.equal?(b) puts a.instance_of?(Class1) puts a.kind_of?(Object) puts a.nil? puts a.to_s
输出:
21627090
Class1
false
false
true
true
false
#<Class1:0x29401a4>
Kernel
我们可以在任何地方调用 Kernel 的方法,具体的原因我们再后面细说。
exit : 终止脚本运行。
global_variables : 返回全局变量名字。
local_variables : 返回当前局部变量的名字。
puts : 打印对象信息。