gpt4 book ai didi

Ruby 封装

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

我正在研究“Beginning Ruby”这本书,在我进行封装之前一切都进行得很顺利。我明白这段代码在做什么,我只是不知道为什么要用这些方法设置它。

对于那些感兴趣的人 this is the link与书中关于封装的页面。

class Person
def initialize(name)
set_name(name)
end

def name
@first_name + ' ' + @last_name
end

def set_name(name)
first_name, last_name = name.split(/\s+/)
set_first_name(first_name)
set_last_name(last_name)
end

def set_first_name(name)
@first_name = name
end

def set_last_name(name)
@last_name = name
end
end

p = Person.new("Fred Bloggs")
puts p.name

在我看来,这样的东西可以达到同样的效果:

class Person
def initialize(name)
@first_name, @last_name = name.split(/\s+/)
end

def name
@first_name + ' ' + @last_name
end
end

p = Person.new("Fred Bloggs")
puts p.name

为什么要在单独的方法中设置对象变量?

最佳答案

Setter 方法可用于修改现有对象的状态。在你的情况下,人的名字是“某种”不可变的。你不能更改人的名字,你只能用新名字创建一个新人。

关于Ruby 封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15722331/

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