RubyでInitializeメソッドを使用する方法
initializeメソッドは、Rubyのオブジェクト作成プロセスの一部であり、オブジェクトの初期値を設定できます。
他のプログラミング言語では、これを「コンストラクター」と呼んでいます。
例 :
Pointがあるとしましょう クラスの場合、このポイントには2つの座標xが必要です。 &y 。
これらの値をオブジェクトにどのように渡しますか?
このように :
Point.new(10, 20)
new メソッドは、PointなどのクラスからRubyで新しいオブジェクトを作成する方法です。 、またはアクセスできるその他のクラス。
新規と初期化の関係
これらの2つの引数、10に注意してください。 &20 ?
ここで、initializeに戻ります。 メソッド。
newに引数を渡そうとした場合 &initializeを定義しない場合 エラーが発生します:
ArgumentError: wrong number of arguments (2 for 0)
newを呼び出すと 、Rubyはinitializeを呼び出します !
これが必要です :
class Point def initialize(x, y) end end
これで、Pointを作成できます 2つの引数を持つオブジェクト。
したがって、initializeの要点はすべて 引数付きのオブジェクトを作成できるようにすることです。
引数の保存
initializeに渡される引数 自動的にどこにも保存されません。
これは、インスタンス変数を使用して行う必要があります:
class Point
def initialize(x, y)
@x = x
@y = y
end
end
これにより、xの値が割り当てられます &y インスタンス変数(@x &@y )後でアクセスできるようにします。
initializeに関する注意点 :
- オプションとデフォルトの引数を定義できます
-
returnの使用 このメソッドの内部は特別であり、常に新しいオブジェクトを返すため、意味がありません initializeの定義 クラスに引数が必要ない場合は必要ありません
initialize内で他のメソッドを呼び出すことができます 、ただし、使用するオブジェクトを準備するために必要な作業以外に、ここで実際の作業を行う必要はありません。
例 :
クラスがすべてGithubAPIの操作に関するものである場合は、考えられるすべてのリクエストを事前にAPIにプリロードする必要はありません。
APIキーをインスタンス変数に保存したいだけです。
または、クラスに必要なデータ。
ハッシュおよびその他の組み込みオブジェクトの初期化
ハッシュなどの組み込みオブジェクトには、newを呼び出す以外に、それらを初期化および作成するための特別な方法があります。 。
ハッシュを作成する方法 :
h = Hash.new
h = Hash['a', 1]
h = {}
文字列を作成する方法 :
s = String.new s = "" s = %Q()
アレイを作成する方法 :
a = Array.new(5) a = %w(a b c) a = []
%w 文字列の配列を作成します。
概要
Rubyの初期化メソッドと、それがnewとどのように関連しているかについて学習しました。 メソッド、およびRubyでのオブジェクト作成の基本。
Rubyでのオブジェクト指向プログラミングのイントロを読んで学び続けてください。
読んでくれてありがとう!
-
Ruby Grepメソッドの使用方法(例付き)
grepについて話しましょう メソッド。 この方法で何ができますか? Grepを使用して、配列や範囲などの列挙可能なオブジェクトをフィルタリングできます。 「しかし、selectはすでにそれを行っています!」 はい。ただし、grepの動作は異なり、結果も異なります。 いくつかの例を見てみましょう。 RubyGrepメソッドの例 この配列が与えられた場合: objects = [a, b, c, 1, 2, 3, nil] grepを使用して文字列のみを取得できます : objects.grep(String) # [a, b, c] 整数のみ: objects.g
-
Ruby Mapメソッドの使用方法(例付き)
Mapは、配列、ハッシュ、範囲で使用できるRubyメソッドです。 マップの主な用途は、データを変換することです。 例 : 文字列の配列が与えられた場合、すべての文字列に目を通し、すべての文字を大文字にすることができます。 または、Userのリストがある場合 オブジェクト… 変換できます 対応するメールアドレス、電話番号、またはその他の属性のリストにそれらを追加します Userで定義 クラス。 これを行う方法を正確に見てみましょう! ルビーマップ構文 マップの構文は次のようになります: array = [a, b, c] array.map { |string| string.