Arrays 为什么Ruby代码显示数组的十六进制代码而不是输入?
Ruby给我的是十六进制代码,而不是数组中的值。这是一个更大的问题,我使用嵌套类查找牙医预约的日期,我相信我在代码中将问题缩小到了这一点。我把它复制到另一个编译器中,看看它是否是这样的。不知道我错过了什么。为什么它给出我的十六进制而不是“描述,月,日,年” 默认情况下,#to#s打印对象的类和对象id的编码。一个选项是,Arrays 为什么Ruby代码显示数组的十六进制代码而不是输入?,arrays,ruby,class,Arrays,Ruby,Class,Ruby给我的是十六进制代码,而不是数组中的值。这是一个更大的问题,我使用嵌套类查找牙医预约的日期,我相信我在代码中将问题缩小到了这一点。我把它复制到另一个编译器中,看看它是否是这样的。不知道我错过了什么。为什么它给出我的十六进制而不是“描述,月,日,年” 默认情况下,#to#s打印对象的类和对象id的编码。一个选项是,放置数组。按照@Will Richardson的建议检查。另一个选项是覆盖默认的#to#行为: class Appointment attr_accessor :desc,:
放置数组。按照@Will Richardson的建议检查
。另一个选项是覆盖默认的#to#行为:
class Appointment
attr_accessor :desc,:month,:day,:year
def initialize(desc, month, day, year)
@desc = desc
@month = month
@day = day
@year = year
end
# Example override
def to_s
"#{desc} on #{month}/#{day}/#{year}"
end
end
然后
将输出
Description on 6/18/1998
不过,作为一个补充,您可能需要研究用于存储月、日和年的ruby Date或DateTime类
日期:
DateTime:虽然Joshua Pereira提供的答案是正确的,但这里有另一种方法可能会对您有所帮助 您定义了一个类,但没有告诉该类“如何显示自身”,即您没有提供一个
to_s
方法。你当然可以在你的类中定义这样一个方法
def to_s
"Appointment: #{desc} #{month} #{day} #{year}"
end
但是,由于您的约会
类似乎主要是4个值的容器,因此您也可以通过
Appointment=Struct.new(:desc, :month, :day, :year)
一个优点是,这会自动为您创建一个。例如,下面的代码
arr1 = Appointment.new("Description", 6, 18, 1998)
puts arr1
生成输出:
#这是调用类(即
)的时的默认输出-如果要转储成员变量,请尝试放置数组。检查尝试以下操作:arr1.desc#=>“Description”;arr1.6个月#=>6个月;arr1.day#=>18;arr1.year#=>1998
。谢谢你的帮助,我很快会看一看,然后回来。我很感激。谢谢你的帮助。我也会看看你的答案,看看是否有帮助。我很感激
Appointment=Struct.new(:desc, :month, :day, :year)
arr1 = Appointment.new("Description", 6, 18, 1998)
puts arr1