![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
rubyでは<や>などの比較演算子もメソッドと分類されるのでオーバーライドが可能と認識しております。具体的にどのようにコーディングしたら良いのでしょうか?
例えば、配列に数値が格納されているとします。
array=[3,5,4,2,1]
この配列をソートした場合に比較が何回行われたかをカウントしたいです。
p array.sort
>や<が再定義可能なら、比較演算子が呼ばれる度にカウンターアップするなどと言う事はできるような気がするのですが、どうコーディングしてよいか解りません。
rubyのマニュアルも読んだし、それなりに検索でも頑張ったのですが、煮詰まってしまいました。
ご指導のほど、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
クラス変数を定義します。
単に再定義するには、必要ないですが、
元のメソッドを利用したい場合は、alias しておきます。
#!/usr/bin/ruby
# coding: utf-8
class Fixnum
@@counter = 0
alias orig_compare <=>
def <=>(other)
@@counter += 1
orig_compare(other)
end
def counter
@@counter
end
end
a = [3, 5, 4, 2, 1]
p a.sort, 0.counter
結果:
[1, 2, 3, 4, 5]
7
No.1
- 回答日時:
こういう感じでしょうか。
#!/usr/bin/ruby
# coding: utf-8
a = [3, 5, 4, 2, 1]
@c = 0
p a.sort_by{|e| @c += 1; e}, @c
@c = 0
p a.sort{|x, y| @c += 1; x <=> y}, @c
結果:
[1, 2, 3, 4, 5]
5
[1, 2, 3, 4, 5]
7
MillenniuMさん、ご回答ありがとうございます。
これで知りたかった事は知れたのですが、これで自信の本当の目的は達成できたのですが、
メソッドのオーバライドってどうやるの? って質問としたので、もうすこし質問は開いておかせてください。
しかしながら、とても参考になりました。ありがとうございます。難しく考えてました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- 統計学 t検定を繰り返してはいけない理由について教えて下さい。 2 2022/05/15 12:37
- Excel(エクセル) 配列操作について 5 2023/04/18 07:27
- 英語 "beside"と比較級の共起の可否について 5 2022/11/15 09:51
- 会社・職場 ファイルで机をバンっと叩くのはハラスメントですか? 上司が部下に注意指導をしている場面です。 怒りと 6 2022/10/05 12:54
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- 統計学 統計学、エクセルがわかりません!解答と詳しい解説をお願いします! (1)それぞれの地域別に記述統計量 9 2022/08/21 16:30
- その他(悩み相談・人生相談) 妹が何においても私と比較してきます。 妹は私よりも優秀で私は比較しない様にしてるのですがそれでも比較 5 2022/10/27 01:43
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- 統計学 新製品が売れているかの統計解析 3 2023/04/27 21:46
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メソッド定義の構文のdefって
-
get() と find() の違いについて
-
教えてください。vb5.0
-
*(1..5)の意味
-
c言語のプログラムでこの実行結...
-
演算子の再定義とインスタンス...
-
子クラスのインスタンスから親...
-
Rubyの超初心者です。「戻り値r...
-
関数の引数に複数のユーザ定義...
-
rails3初心者 検索対象に別テー...
-
Ruby インスタンス変数@fooを...
-
HSTLやSSTL等のI/Oピン
-
計算の途中経過を表示
-
【Ruby】基本的な質問 数字を...
-
What class are you in? には何...
-
railsのform_forの使い方
-
ジェネレーターとはなんですか?
-
お互いをメンバに持つようなク...
-
再帰に関する質問です。
-
[LWP?] 特定のCLASSの値だけ取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
get() と find() の違いについて
-
エクセルVBA オートフィルタで...
-
VBAで型が一致しないエラー(バ...
-
教えてください。vb5.0
-
エラー「メソッドまたはデータ...
-
A1の値をファイル名に指定した...
-
実行時エラー450:引数の数が一...
-
Csvファイルの最終行を取得する...
-
Ruby:シルバーについて
-
Ruby on Rails 「attr_accessor...
-
クエリーストリングとは?
-
メソッド定義の構文のdefって
-
RubyでバイナリデータをIOスト...
-
.sub(/.+/,"aaaaaaa#{$&}"の置...
-
【C++】DxlibのLoadgraph()を使...
-
正規表現で両端に文字列を置換
-
RubyのDateクラスのメソッドが...
-
ruby shuffleメソッド
-
エラー・・
-
pythonのerrorコード
おすすめ情報