Ruby 初心者スレッド Part 67 (729レス)
Ruby 初心者スレッド Part 67 http://mevius.5ch.net/test/read.cgi/tech/1608837867/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
56: デフォルトの名無しさん (ワッチョイ 7f2c-8PYP) [sage] 2021/01/25(月) 17:06:01.79 ID:+q31tGtg0 黒魔術・メタプログラミングで、よく見る インスタンス変数用のinstance_variables、 クラス/モジュールには、クラス変数(@@these_things)用のclass_variables http://mevius.5ch.net/test/read.cgi/tech/1608837867/56
57: デフォルトの名無しさん (ワッチョイ 5f01-oRbG) [sage] 2021/01/25(月) 18:43:13.07 ID:co/Rkwpa0 >>54 そういう用途はStruct使うといいんでない? Foo = Struct.new("Foo", :name, :id, :data1, :data2) foo = Foo.new("foo", 1, "123", "456") foo.to_h.keys #=> [:name, :id, :data1, :data2] foo.to_h.keys.to_csv #=> "name,id,data1,data2¥n" http://mevius.5ch.net/test/read.cgi/tech/1608837867/57
58: デフォルトの名無しさん (ワッチョイ 5f01-oRbG) [sage] 2021/01/25(月) 18:47:31.66 ID:co/Rkwpa0 Structは初期化時の引数の数が一致してなくてもエラーにならずにnilがデフォルト値になる それがいやな場合は継承してコンストラクタを上書き class Bar < Struct.new("Bar", :name, :id, :data1, :data2) def initialize(name, id, data1=nil, data2=nil) super end end http://mevius.5ch.net/test/read.cgi/tech/1608837867/58
59: デフォルトの名無しさん (バットンキン MM7a-HhZe) [] 2021/01/29(金) 04:39:32.60 ID:sK+sAxFfM 質問させてください。 以下のようなデータがあるとして。 data = { "id": "price_xxxxxxx", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1234567, "currency": "usd", "metadata": { "commission": "2" } } このデータを p data.metadata.commission とすると4が表示されるようにしたいです。 どうやって変換すればいいでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1608837867/59
60: デフォルトの名無しさん (バットンキン MM7a-HhZe) [] 2021/01/29(金) 04:40:41.40 ID:sK+sAxFfM >>59 すいません、4じゃなくて2でした。。 http://mevius.5ch.net/test/read.cgi/tech/1608837867/60
61: デフォルトの名無しさん (ワッチョイ 2a01-I+PI) [sage] 2021/01/29(金) 13:59:12.19 ID:IOP7xwlv0 普通にブラケットでアクセスするかdigしたほうがいい気がするが どうしてもドットでアクセスしたいなら再帰的にOpenStructに変換する data = JSON.parse(data.to_json, object_class: OpenStruct) data.metadata.commission #=> "2" http://mevius.5ch.net/test/read.cgi/tech/1608837867/61
62: デフォルトの名無しさん (ワッチョイ 662c-CS/l) [sage] 2021/01/29(金) 14:31:44.23 ID:MVM9RsSY0 ハッシュだから、hash.x.xyz は無理だろ Effective Ruby の項目10 に書いてある、 構造物はハッシュじゃなくて、クラス・Struct を使おうというやつだろ ただ、その都度、構造が変わるものは、ハッシュの方が良いし、 構造がネストしている場合も難しい require "json" json = <<'JSON' { "a": "abc", "x": { "xyz": "2" }} JSON p hash = JSON.parse( json ) #=> {"a"=>"abc", "x"=>{"xyz"=>"2"}} p hash[ "x" ][ "xyz" ] #=> 2 http://mevius.5ch.net/test/read.cgi/tech/1608837867/62
63: デフォルトの名無しさん (バットンキン MM7a-HhZe) [] 2021/01/29(金) 14:57:50.28 ID:sK+sAxFfM >>61, >>62 ありがとうございます。 背景を書いてませんでしたが、rspec で必要なデータなのです。。 後出しですいません。 なので data.metadata.commission で確認できることが必要なので、Struct(もしくはOpenStruct)で、変換させてみます。 http://mevius.5ch.net/test/read.cgi/tech/1608837867/63
64: デフォルトの名無しさん (オッペケ Srbd-+Ul7) [sage] 2021/01/29(金) 21:09:33.54 ID:/bfQuQp2r >>59 def hoge!(obj) return unless Hash === obj def obj.method_missing(name, *_) = self[name] obj.each_value{Hash === _1 && hoge!(_1)} end hoge!(data) p data.metadata.commission # => "2" # 冗談だけど http://mevius.5ch.net/test/read.cgi/tech/1608837867/64
65: デフォルトの名無しさん (ワッチョイ 6a06-fCoL) [sage] 2021/02/03(水) 22:28:17.16 ID:S1/u+juE0 >>54です。 アドバイスありがとうございます。 私も色々と調べたのですが、オブジェクトを1回作らないと難しいかもしれませんね。 仮にデータが全くなかった場合、csvのヘッダーのみ記述されたcsvファイルを出力したいと考えています。 しかし、データが全くないと、オブジェクトが無いため、オブジェクトからプロパティを取得する方法が使えません。 もちろん、ダミーのオブジェクトを作ればOKですが、少々不自然かと思いました。 Structは知らなかったので、勉強させていただきます。 ありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1608837867/65
66: デフォルトの名無しさん (ワッチョイ 2a01-I+PI) [sage] 2021/02/03(水) 23:01:53.55 ID:q3Uucr840 Struct.membersでいいんじゃないの? http://mevius.5ch.net/test/read.cgi/tech/1608837867/66
67: デフォルトの名無しさん (アウアウウー Sa9b-EKhR) [sage] 2021/02/07(日) 21:57:18.80 ID:RWoPy8BIa https://twitter.com/yukihiro_matz/status/1358048924141973504?s=20 > 世界一周クルーズの広告が表示され、妻と「コロナ収まったら行きたいね」 世界一周は最低500万、上は数千万にもなる。 うっかり金持ち自慢をしてしまう… https://twitter.com/5chan_nel (5ch newer account) http://mevius.5ch.net/test/read.cgi/tech/1608837867/67
68: デフォルトの名無しさん (ワッチョイ 9286-yOCM) [sage] 2021/02/12(金) 15:35:22.83 ID:Ru8WMsS80 インストールしなくていい機能縮小版rubyを作って、awkを代替えできるようにする というのはどうでしょう http://mevius.5ch.net/test/read.cgi/tech/1608837867/68
69: デフォルトの名無しさん (ワッチョイ 8333-cxxd) [sage] 2021/02/12(金) 19:50:07.01 ID:74skEOdG0 >>68 そんな用途なら、互換性が期待できないRubyよりも、信頼できるPerlのほうがええやろ。 http://mevius.5ch.net/test/read.cgi/tech/1608837867/69
70: デフォルトの名無しさん (ワッチョイ cbb3-8Wj8) [] 2021/02/15(月) 00:33:16.20 ID:KKKRaaGF0 すまん唐突だけど質問させて eql口頭でってなんで読んだら良いの? http://mevius.5ch.net/test/read.cgi/tech/1608837867/70
71: デフォルトの名無しさん (ワッチョイ cbb3-8Wj8) [] 2021/02/15(月) 00:34:14.29 ID:KKKRaaGF0 ミスった eqlって口頭では何て発音したら良いの? です http://mevius.5ch.net/test/read.cgi/tech/1608837867/71
72: デフォルトの名無しさん (オッペケ Src7-JgCO) [sage] 2021/02/15(月) 11:38:51.60 ID:adP2s3N/r イコールって読んでる equal?とeql?が入り乱れて使われてるところはしらんが。 まぁrubyしてるならequalとeql両方知ってるはずだし短いイコールの方、とかでも伝わるんじゃ http://mevius.5ch.net/test/read.cgi/tech/1608837867/72
73: デフォルトの名無しさん (アウアウウー Sac3-/q7V) [sage] 2021/02/15(月) 13:06:36.01 ID:2czEo7/ia イーキュー イーキューエル イコール http://mevius.5ch.net/test/read.cgi/tech/1608837867/73
74: デフォルトの名無しさん (オッペケ Src7-gtE8) [sage] 2021/02/15(月) 21:15:47.96 ID:oDLt9usUr イークワル http://mevius.5ch.net/test/read.cgi/tech/1608837867/74
75: デフォルトの名無しさん (ワッチョイ cbb3-8Wj8) [] 2021/02/16(火) 21:32:31.57 ID:fxt1OOtg0 >>72 rubyやり始めたところで、eqlがイコールって気づかなかった。短い方のイコールって良いですね!ありがとうございます。 >>73 自分もイーキューエルだて頭の中で読んでた >>74 なんでやーーー!! http://mevius.5ch.net/test/read.cgi/tech/1608837867/75
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 654 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.008s