- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ruby Vectorの===変更の問題)
Ruby Vectorの===変更:範囲内判定の問題
このQ&Aのポイント
- Ruby Vectorで要素に範囲オブジェクトを入れたVectorと同じ要素数のVectorを組んで、範囲内判定を実装したいが、元の===が変更されてしまい、元の処理が使えなくなる可能性がある。
- ===の変更が重要な処理に影響するかどうか不明で、検索しても具体的な情報が得られない。
- RubyのVectorを使用して範囲内判定を実装する際の問題についての質問。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
主たる使用場所は、case / when 構文です。あと、Enumerable#grep での比較。 おそらく再定義で問題は無いと思いますが、心配なら、Vectorを直接使うので無く、サブクラスを定義してそこで再定義して使えば良いかと思います。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
回答No.2
そこに悩むくらいなら、別の名前にして inRange(Vector[3, 8], Vector[(0..10), (5..8)]) とか myVector[3, 8].inRange(myVector[(0..10), (5..8)]) とかにしたらどうでしょうか?
質問者
お礼
回答ありがとうございます。 別のメソッドとして実装することも考えたのですが、 統一感が無くなり、分かり易さ、見た目などを考慮して、===の方が適切だと思っています。
お礼
回答ありがとうございます。 御陰様で使用場所がはっきりとしました。 サブクラスでも良いと思うのですが、===の処理だけの為に作成するのも気が引けるので、 今回は元のクラスのまま再定義でやってみます。