gpt4 book ai didi

ruby - 编写一个很棒的、可重用的 "to_s"方法以更好地调试

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:27 25 4
gpt4 key购买 nike

<分区>

我有几个对象,我想经常放置以进行调试。 Objects默认的 to_s 方法不适合这个目的。总的来说,我觉得你会想要调查实例(所以最有趣的部分是实例变量)所以我想到了这个:

class DebugObject
def initialize(args)
raise ArgumentError unless args.is_a? Hash
args.each { |k,v| instance_variable_set "@#{k}".to_sym,v }
end

def to_s
str = "#{self.class}:\n"
instance_variables.each do |var|
str += " %s: %s" % [var, instance_variable_get(var)]
end
str
end
end

class User < DebugObject
attrs = [:email, :password, :first_name, :last_name, :street, :postal_code, :city]
attrs.each { |attr| attr_accessor attr }
end

class CreditCard < DebugObject
attrs = [:holder, :number, :cardinalidity, :cvc, :error_code, :error_message]
attrs.each { |attr| attr_accessor attr }
end

与 puts 一起使用时给我:

User:
@first_name: Peter @last_name: Parker @street: Street number @postal_code: 9020
@city: New york @email: peter@parker.com

CreditCard:
@holder: Martin @number: 00000 @cardinalidity: 09/10 @cvc: 123
@error_code: 00 @error_message: No eroro :)

我想知道您是否有任何提示和技巧来编写一个在调试时有用的出色、可重用的 to_s 方法?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com