ハッシュを拡張し、値をキーで指定した範囲内から取得したいと思っているのですが、ハッシュと同じように作成できないのでしょうか?
試行錯誤してみたのですが、記述が分かりません・・・。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の入力した文字を反転させ...
-
パソコンのスクリーンセーバー...
-
1、Rstudioで回帰直線を求める...
-
ビーリアルのユーザー名を変え...
-
(再質問)エクセルのマクロボ...
-
VBScriptでExcel(2019)上のデー...
-
実行時エラー450:引数の数が一...
-
100万件越えCSVから条件を満た...
-
VBA メモ帳の上書き保存がしたい
-
Accessで文字列のバイト数読み込み
-
再起動後必ず2つのエラーが出...
-
教えてください
-
英数字を含む文字列(0-9,A-Z)...
-
A4 持ち込み
-
あせんうぶり言語
-
これらは書誌情報だと思うので...
-
情報の表現。()内がどうしても...
-
pythonのerrorコード
-
三項でたとえば交換って
-
WinSCPで画像のように puttyを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
What class are you in? には何...
-
クラス名やモジュール名の競合...
-
HSTLやSSTL等のI/Oピン
-
変数の隠蔽とは?
-
class roomとclassroom どちら...
-
テンプレートの特殊化でコンパ...
-
No route matches [GET] "/post...
-
Webプログラマーの方にお聞きし...
-
2つのクラスがお互いのポイン...
-
Visualurubyのラジオボタンにつ...
-
Ruby Angleクラス作成方法について
-
特定のactionでのみvalidation
-
クラスの再定義について(C++)
-
syntax error 一行で書くと
-
PythonのClassに関する質問です。
-
Rails AR 深い階層のテーブル参照
-
構造体を使ったプログラム
-
【delphi】クラスの継承、互換...
-
railsのlink_toに動的なclass指定
-
「arg」は何の略?
おすすめ情報