gpt4 book ai didi

ruby - 为什么从类中调用setter方法时可以更改方法名称?

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

<分区>

我在看这个例子:

class Person
attr_reader :name, :age #creates getter method's age & name

def initialize(name)
@name = name
end
def age=(a) # creates setter method for age
@age = a
end
end
mike = Person.new('Mike')
mike.age = 20 # calling setter method
mike.age # calling getter method, returns 20

我试图理解为什么“mike.age = 20”等同于说“mike.age=(20)”。

我知道我们不必在 Ruby 中为传递给方法的参数使用括号。所以我知道为什么“mike.age = 20”与“mike.age = 20”相同。但是,我无法理解为什么我们可以在“年龄”之后放置一个空格。等号不是方法名称的一部分吗?例如,我知道我不能说:

def is_even?(n)
n.even?
end

p is_even ? 3

因为问号是我的方法名的一部分,所以我知道我不能用空格分隔它。那么,为什么我能够在第一个示例的 setter 方法中用空格分隔“年龄”和等号?

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