これは、私のサイトにあるRubyのコード例を読むための簡単なガイドです。これはRubyの完全なガイドではありません。記事で使用している構文のみを扱います。基本的なオブジェクト指向言語に精通していることを前提としています。
左側の列にはコードの断片が、右側の列にはそのコードの断片群の意味の説明があります。理解できない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 |
メソッドの宣言 メソッドは、グローバル(最上位レベルで定義されている場合)またはクラスのインスタンスメソッドになります。 あいまいさがない場合は、メソッドの定義と呼び出しで括弧は省略できます。 メソッド名には「=」を含めることができます(その場合は`name = aValue`のように使用されます)。名前には「?」を含めることができ、一般的にはブール型のゲッターに使用されます(例:`aSet.include?(aValue)`)。 |
@field |
インスタンス変数。 宣言する必要はありません。最初に使用されたときに定義されます。設定される前にアクセスされた場合はnilを返します。 |
def self.class_method |
クラスメソッドの定義 |
@@class_variable |
クラス変数 |
$global_variable |
グローバル変数 |
attr_accessor :field1, :field2 attr_reader :field |
アクセッサ付きインスタンス変数 ランタイムコード生成を使用して、ゲッター`name`とセッター`name = arg`を定義します。`attr_accessor`は両方とも定義し、`attr_reader`はゲッターのみを定義します。 |
def initialize |
イニシャライザメソッド このメソッドは、インスタンスを作成するたびに呼び出されます。デフォルトでは、`aClass.new(arg1, arg2)`でオブジェクトを作成します。両方の引数は`initialize`に渡されるため、必要な引数ごとに引数を宣言します。他のクラスメソッドを定義して、他の名前で新しいインスタンスを作成することもできます。 |
class Subclass < Superclass |
継承の宣言 |
{|arg1, arg2| doSomething(arg1, arg2)} do |arg1, arg2| doSomething(arg1, arg2) end do doSomething end |
ブロック ブロックを定義します。Rubyでは、クロージャをブロックと呼びます。`{}`と`do/end`の2つの構文はほぼ同等です。`{}`形式は通常1行の場合に、`do/end`形式は複数行のブロックに使用されます。 引数をいくつでも取ることができます。クロージャと同様に、レキシカルスコープ内の変数を参照できます。 ブロックは、Rubyのライブラリ全体で広く使用されています。 |
var ||= value |
Nilへの代入 varがnilの場合のみ、varに値を代入します。`var = value if nil == var`と同等です。 ここで詳細に説明するのは、nilがfalsy(ブール式ではnilがfalseとして扱われることを意味する)という事実によるものです。そのため、`var += 5`のような式と同様に、これは`var = var || value`と同等です。 |
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は文を続けることを推論します。同様に、メソッド呼び出しでピリオドで行を終える場合も同様です。 |
文字列は、シングルまたはダブルクォートのどちらかを使用できます(エスケープルールは異なります)。