gpt4 book ai didi

ruby-on-rails - Ruby 类变量

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

我正在尝试通过阅读有关类变量的教程来学习 Ruby。

代码创建了一个“Worker”对象,创建了一个类变量来跟踪用户最后创建了哪个 Worker 实例。

我已经复制了作者的代码但是我得到了错误:

undefined method `latest' for Worker:Class (NoMethodError)

我找到的代码是:

class Worker
attr_writer :number_of_jobs

def initialize(name, job)
@name = name
@job = job

@@latest = @name
@@job = @job
puts "Lets get started"
end

def new_job(job)
@job = job
puts "I moved to #{job}!"
self.fetch_info
end

def name_update(name_new)
@name = name_new
puts "My new name is #{name_new}."
self.fetch_info
end

def fetch_info
puts "I'm #{@name} in #{@location}."
end

def job_score
return "#{@number_of_jobs * 10}Fg"
end


protected
def are_you_worker?(guest_name)
puts "Yes #{guest_name}, I am a worker!"
return true
end

private
def text_a_message(message)
puts message
end

public
def tell_friend(where)
text_a_message("I just applied to #{where}")
end
end

#running the code
Worker1 = Worker.new("Steve", "Support")
Worker2 = Worker.new("Alan", "PA")
puts Worker.latest

有人能看出原因吗?

最佳答案

Class 变量在这个类中是私有(private)的,这导致了一个问题。因此访问 Worker.latest 变量将导致错误,因为它在类外部的实例中不可见(但它是创建和设置的)。

此外,属性是对象的一部分,而不是类的一部分,因此您不应该为此类设置属性。在 native Ruby 中,类变量不能从外部访问,除非通过类方法(不过在 Rails 中有针对它们的扩展)。

希望对你有帮助

关于ruby-on-rails - Ruby 类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444563/

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