
ハッシュを拡張し、値をキーで指定した範囲内から取得したいと思っているのですが、ハッシュと同じように作成できないのでしょうか?
試行錯誤してみたのですが、記述が分かりません・・・。
class Range_List < Hash
#
# 範囲に対応する、値を取得(速度が気になりますが・・・)
#
def [](other)
@list.each { |range, value|
return value if range === other
}
nil
end
end
# 角度 (0..1) に対応する、十キーのリストを作成
angle_to_direction = Range_List{ # => エラー。このような記述で呼び出したい
0.0625..0.1875 => 3,
0.1875..0.3125 => 2,
0.3125..0.4375 => 1,
0.4375..0.5625 => 4,
0.5625..0.6875 => 7,
0.6875..0.8125 => 8,
0.8125..0.9375 => 9,
0.9375..1 => 6,
0..0.0625 => 6
}
# 角度対応の十キーを求める
p angle_to_direction[0.1] # => 3
どうかご回答お願いいたします。
No.2ベストアンサー
- 回答日時:
No1です。
テストはしていませんが、class Range_List < Hash
def initialize(hash)
@list=hash
end
def [](other)
@list.each { |range, value|
return value if range === other
}
nil
end
end
def Range_List(hash)
Range_List.new(hash)
end
で、
angle_to_direction = Range_List( a..b=>c, d..e=>f, g..h=>i, ~~)
引き続きご回答ありがとうございます。
上記の通りにやってみたところ、出来ました!!
やはり、Kernelに定義するのですね。
引数が、自動的にHashに格納されるとは・・・意外でした。
お陰様でまた一歩前進できそうです。
毎回ご回答下さり、本当にありがとうございます。
No.1
- 回答日時:
Range_List { xxx..yyy => zzz, ~~~ } のような呼び出し方はできないです。
Range_List( { xxx..yyy => zzz, ~~~ } ) か Range_List ( xxx..yyy => zzz, ~~~ ) か。
Range_Listメソッドはどのように定義していますか?
あと、Range_List#initialize はどのように定義していますか?
この回答への補足
早速のご回答ありがとうございます。
>> Range_List { xxx..yyy => zzz, ~~~ } のような呼び出し方はできないです。
>> Range_List( { xxx..yyy => zzz, ~~~ } ) か Range_List ( xxx..yyy => zzz, ~~~ ) か。
やはりできませんでしたか・・・。
僕としては、Range_List({})と二回括弧を書くよりは、Range_List()で呼び出せればと思っています。
>> あと、Range_List#initialize はどのように定義していますか?
当初はHashを継承しなくても、下記のように呼び出せると思っており、エラーが出てそう甘くないと痛感していたところです。
Hashを継承するにあたり、現在はメソッドが被らないように全てコメントにしています。
class Range_List
#
# オブジェクト作成
#
def self.{}(list) # エラーが出た為、Hashを継承させる方法を模索・・・
new(list)
end
#
# オブジェクト初期化
#
def initialize(list)
@list = list
end
end
まだまだRubyの深い部分を知らず、記述がイマイチ分かりません・・・。
どうか引き続きご回答の程お願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
教えてください
-
ビーリアルのユーザー名を変え...
-
(再質問)エクセルのマクロボ...
-
Ruby require ライブラリー
-
プログラミングについてです。...
-
pythonエラー
-
VBScriptでExcel(2019)上のデー...
-
<python>ノイズを時間指定して...
-
エクセルvbaでチェックボックス...
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラス名やモジュール名の競合...
-
HSTLやSSTL等のI/Oピン
-
What class are you in? には何...
-
変数の隠蔽とは?
-
pythonのerrorコード
-
c#のマクロ定義について
-
2つのクラスがお互いのポイン...
-
templateクラス中のtypedef enu...
-
動的配列の構造体の受け渡しに...
-
ruby on railsのmigrateでカラ...
-
原因のat?
-
テンプレートの特殊化でコンパ...
-
【delphi】クラスの継承、互換...
-
PythonのClassに関する質問です。
-
GPRSのclassについて
-
Rubyの正規表現を引数に
-
あってますか?
-
「arg」は何の略?
-
get() と find() の違いについて
-
エラー「メソッドまたはデータ...
おすすめ情報