gpt4 book ai didi

ruby - about_classes.rb 在 ruby​​ 中检查和 self

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

我目前正在处理 about_classes.rb。我对inspect 的概念及其与self 的关系感到困惑。调用对象是否会自动返回该对象的检查方法?

class Dog7
attr_reader :name

def initialize(initial_name)
@name = initial_name
end

def get_self
self
end

def to_s
__
end

def inspect
"<Dog named '#{name}'>"
end
end

def test_inside_a_method_self_refers_to_the_containing_object
fido = Dog7.new("Fido")

fidos_self = fido.get_self
assert_equal __, fidos_self
end

def test_to_s_provides_a_string_version_of_the_object
fido = Dog7.new("Fido")
assert_equal __, fido.to_s
end

def test_to_s_is_used_in_string_interpolation
fido = Dog7.new("Fido")
assert_equal __, "My dog is #{fido}"
end

def test_inspect_provides_a_more_complete_string_version
fido = Dog7.new("Fido")
assert_equal __, fido.inspect
end

def test_all_objects_support_to_s_and_inspect
array = [1,2,3]

assert_equal __, array.to_s
assert_equal __, array.inspect

assert_equal __, "STRING".to_s
assert_equal __, "STRING".inspect
end

最佳答案

selfinspect 没有特殊关系——恰好您正在使用的“Ruby koans”教程同时教您这两者。

self 是一个关键字,它在方法内部计算为您调用该方法的对象。

inspect 是所有对象实现的方法,它返回对象的字符串表示。 to_s 还返回对象的字符串表示形式。

不同之处在于,inspect 返回的字符串通常会(如果可能)模仿可以创建等效对象的 Ruby 语法。 inspect 一般用于调试。 to_s 返回的字符串通常更适合显示给最终用户。

“#{expression}”语法隐式调用对象上的 to_s,该对象是评估 expression 的结果。

关于ruby - about_classes.rb 在 ruby​​ 中检查和 self ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6442095/

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