rubyクラスArrayにメソッドを追加したいと思います。 iterating中に配列とそのインデックスを参照することは可能ですか?反復処理中に配列内の要素のインデックスを取得するにはどうすればよいですか?
たとえば、配列の要素をインデックスとともに印刷するメソッドを作成したいとします。
array = [:a, :b, :c]
array.print_elements_with_indexes
# => a 1, b 2, c 3
rubyクラスArrayにメソッドを追加したいと思います。 iterating中に配列とそのインデックスを参照することは可能ですか?反復処理中に配列内の要素のインデックスを取得するにはどうすればよいですか?
たとえば、配列の要素をインデックスとともに印刷するメソッドを作成したいとします。
array = [:a, :b, :c]
array.print_elements_with_indexes
# => a 1, b 2, c 3
class Array
def print_first
puts first # same as `self.first`, or `self[0]`
end
end
[1, 2, 3, 4].print_first # prints 1
あなたはインスタンスメソッドを定義し、クラスの範囲内であれば、メソッド呼び出しは、最初に、この場合にself.
はオプションになりれ、self
に対して解決されます。
最初の要素を印刷することに興味はありませんが、それは本当にその記事の読者にとっては難しいですか?私は配列索引を参照したいと思っています。 – localplutonium
複数の人があなたの質問とあなたの例の両方を誤解しているので、あなたが意味するものを理解することは本当に難しかったです。あなたが探していた解決策を見た後、あなたの実際の質問によく合うように投稿した質問を編集します。 – Kache
self.<any-array-method>
を使用できます。そのような方法の1つはsize
です。これを使用すると、各配列要素を繰り返し処理する範囲を作成できます。
class Array
def do_something
(0...self.size).each do |index|
puts "Index #{index} value is #{self.at(index)}"
end
end
end
[1, 2, 3, 4].do_something
あるいは、以下に示すように、あなたもRubyのEnumerable#each_with_index
を使用することができます。
class Array
def do_something
self.each_with_index do |index, value|
puts "Index #{index} value is #{value}"
end
end
end
[1, 2, 3, 4].do_something
これは私が探している解決策です。私もstackoverflowの外でそれを考え出した – localplutonium
は 'self.first'を置くか、' '[0]自己を置きます。 –
@CarySwoveland最初の要素を印刷するのは単なる例です。その方法の解決には興味がありません。私は配列のインデックスを参照したい場合は、私は自己を使用するだろうか? – localplutonium
配列は 'self'です。オフセット 'i'の配列の値は' self [i] 'です。オフセット 'i'で配列の値を変更する:' self [i] = 4'。配列 'self << 5'に' 5'を追加します。 'self.delete_at(i)'を実行すると、オフセット 'i'の要素が削除されます。それはあなたが求めていることですか? –