Ruby on rails 在另一个子类中使用一个子类的实例变量

Ruby on rails 在另一个子类中使用一个子类的实例变量,ruby-on-rails,arrays,ruby,inheritance,instance-variables,Ruby On Rails,Arrays,Ruby,Inheritance,Instance Variables,我正在创建一个有名字和姓氏的用户类 class User attr_accessor :first_name, :last_name end 然后,我创建了一个教师班来教授知识 require_relative "./user.rb" class Teacher < User attr_accessor :string1 def initialize @string1 = string1 end KNOWLEDGE = ["a String is

我正在创建一个有名字和姓氏的用户类

class User

  attr_accessor :first_name, :last_name

end
然后,我创建了一个教师班来教授知识

require_relative "./user.rb"

class Teacher < User

  attr_accessor :string1

  def initialize
    @string1 = string1
  end

  KNOWLEDGE = ["a String is a type of data in Ruby", "programming is hard, but it's worth it", "javascript async web request", "Ruby method call definition", "object oriented dog cat class instance", "class method class variable instance method instance variable", "programming computers hacking learning terminal", "bash Ruby rvm update certs"]


  def teach
    @string1 = KNOWLEDGE.sample
  end

end

如果有人能帮我找出代码的错误,我将不胜感激

您引用的是实例变量
@string1
(计算结果为
nil
),而不是参数
string1

试试这个:

def learn(string1)
  @knowledge.push(string1)
end

您似乎还试图“共享”一个实例变量。但是,根据定义,实例变量只属于对象的一个实例。但这不是问题-您的
teach()
方法已经返回了一些知识,您可以在
learn()
方法中使用这些知识。

非常感谢。是的,你说得对。我试图共享实例变量。但我明白你的意思了。:-)
#!/usr/bin/env ruby
require_relative "../lib/user.rb"
require_relative "../lib/teacher.rb"
require_relative "../lib/student.rb"

hima = Student.new
hima.first_name = "Hima"
hima.last_name = "Chhag"

pooja = User.new
pooja.first_name = "Pooja"
pooja.last_name = "Jeckson"

trushal = Teacher.new
trushal.first_name = "Trushal"
trushal.last_name = "Chitalia"


some_knowledge = trushal.teach

hima.learn(some_knowledge)

puts "Hima just learned this important knowledge: '#{hima.knowledge[0]}' from Trushal"

some_knowledge = trushal.teach

hima.learn(some_knowledge)

puts "Hima just learned this important knowledge: '#{hima.knowledge[1]}' from Trushal"

hima.knowledge
def learn(string1)
  @knowledge.push(string1)
end