Ruby 初心者スレッド Part 67 (724レス)
上下前次1-新
抽出解除 レス栞
54(3): (ワッチョイ 5f06-jsk3) 2021/01/23(土)12:19 ID:joIGd+XG0(1) AAS
教えていただきたいのですが、rubyのclassでそのclassに存在するプロパティ一覧を取得する方法ありますか?
以下の様なクラスを作ってます。
class Data
def self.csv_header
return 'name,id,data1,data2'
end
attr_reader :name, :id, :data1, :data2
def initialize(name:, id:, data1:, data2)
@name = name
@id = id
省10
55: (オッペケ Sr7b-3C30) 2021/01/24(日)22:13 ID:kU4Polklr(1) AAS
>>54
hoge = Data.new('name', id: 0, data1: 1, data2: 2)
ivs = hoge.instance_variables
ivs.each{|iv| puts "%s => %p" % [iv, hoge.instance_variable_get(iv)]}
# =>
name => "name"
id => 0
data1 => 1
data2 => 2
57: (ワッチョイ 5f01-oRbG) 2021/01/25(月)18:43 ID:co/Rkwpa0(1/2) AAS
>>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"
65: (ワッチョイ 6a06-fCoL) 2021/02/03(水)22:28 ID:S1/u+juE0(1) AAS
>>54です。
アドバイスありがとうございます。
私も色々と調べたのですが、オブジェクトを1回作らないと難しいかもしれませんね。
仮にデータが全くなかった場合、csvのヘッダーのみ記述されたcsvファイルを出力したいと考えています。
しかし、データが全くないと、オブジェクトが無いため、オブジェクトからプロパティを取得する方法が使えません。
もちろん、ダミーのオブジェクトを作ればOKですが、少々不自然かと思いました。
Structは知らなかったので、勉強させていただきます。
ありがとうございました。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.344s*