gpt4 book ai didi

ruby - 是否可以在 ruby​​ 类中调用重写的 to_s?

转载 作者:数据小太阳 更新时间:2023-10-29 08:56:40 25 4
gpt4 key购买 nike

在对类中的一个变量进行更改后,我希望使用上述变量的新值调用我已实现的类的字符串 ( to_s) 方法。我目前使用:

class Car
...
def ask_for_color_change(string)
normalize = string.downcase
if normalize == "yes"
color = gets.chomp
self.set_color(color)
# tried with self.to_s also, doesn't work
puts self
elsif normalize == "no"
puts "happy you like your factory color -> #{@color}"
else
puts "please reply with either yes/no ONLY"
end
end

def to_s
puts "New Car Details"
puts "---------------"
puts "Make: #{@make}"
puts "Model: #{@model}"
puts "Color: #{@color}"
end

end

puts self在上述方法输出中 #<Car:0x00007fabd18ddc98> .据我所知,这是默认的 to_s执行。所以,换句话说,我如何调用重写的 to_s在类(class)本身内?

最佳答案

我现在可以通过像这样重构 to_s 代码,在 ask_for_color_change(string) 方法中成功地隐式调用 to_s:

def to_s
"
New Car Details
---------------
Make: #{@make}
Model: #{@model}
Color: #{@color}
"
end

因此,它与 puts 的实现方式有关。对于 puts 方法仍然可以看到默认实现的能力的评论将不胜感激。谢谢!

关于ruby - 是否可以在 ruby​​ 类中调用重写的 to_s?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53582054/

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