这是一份简短的指南,帮助您阅读我网站上的 Ruby 代码示例。这不是一份完整的 Ruby 指南,我只涵盖了我在文章中使用的结构。我假设您熟悉基本的 OO 语言。
左侧列包含代码片段,右侧是对这些片段组的解释。如果您发现一些您不理解的 Ruby 代码,请向下滚动左侧查看类似的代码。
对于 Ruby 入门,最好的书籍是 PickAxe。对于在线指南,没有比 Why's (poignant) Guide 更好的了。
puts "hello world" |
打印到控制台 |
class ClassName |
声明一个类 |
def some_method arg1, arg2 call_method(arg1) end def property= arg1 @property = arg1 end |
声明一个方法 该方法可以是全局的(如果在顶层定义)或类上的实例方法。 在方法定义和方法调用中,括号是可选的,只要没有歧义。 方法名称可以包含“=”(在这种情况下,它们用作 |
@field |
实例变量。 不需要声明,它在第一次使用时定义。如果在设置之前访问,它将返回 nil。 |
def self.class_method |
定义一个类方法 |
@@class_variable |
类变量 |
$global_variable |
全局变量 |
attr_accessor :field1, :field2 attr_reader :field |
带有访问器的实例变量 使用运行时代码生成来定义 getter |
def initialize |
初始化方法 每当您创建实例时,都会调用此方法。默认情况下,您使用 |
class Subclass < Superclass |
声明继承 |
{|arg1, arg2| doSomething(arg1, arg2)} do |arg1, arg2| doSomething(arg1, arg2) end do doSomething end |
块 定义一个块,Ruby 对 闭包 的称呼。两种语法 {} 和 do/end 基本上是等效的。{} 形式通常用于单行代码,而 do/end 形式用于多行代码块。 可以接受零个或多个参数。像任何闭包一样,可以引用词法范围内的任何变量。 块在 Ruby 的库中被广泛使用。 |
var ||= value |
如果为 nil 则赋值 仅当 var 为 nil 时,才将值赋给 var。它等效于 这里令人头疼的细节来自于 nil 是假值(这意味着 nil 在布尔表达式中被视为 false)。因此,类似于 |
aList.each {|i| doSomething(i)} |
循环遍历列表 一个 块 是循环遍历列表的常用方法。列表上的其他操作是使用 CollectionClosureMethod 完成的。 |
emptyArray = [] newArray = [var, "some text"] doSomething([var1, var2]) |
数组 Ruby 的数组实际上是列表。它们是可增长的结构,具有丰富的 API。您可以在表达式中的任何地方自由使用它们,例如在方法调用中。 |
var = aHash[key] aHash[key] = var newHash = {key1 => value1, key2 => value2} emptyHash = {} |
哈希 |
anObject. aMethod(arg1, arg2, arg3) |
推断语句延续 Ruby 使用换行符作为语句分隔符。96% 的情况下,这正是您需要的。但是,有时行会变得太长,因此使用换行符的语言需要一个语句延续字符来允许语句跨行。 Ruby 使用几个字符来推断语句延续。因此,如果您在参数列表中以“,”结束一行,Ruby 会推断您想要继续该语句。类似地,如果您以“.” 结束一行以进行方法调用。 |
字符串可以使用单引号或双引号(具有不同的转义规则)。