我不是100%肯定这里的问题是什么......
对于第一个示例,myschool.students[2].first_name您的School类需要一个students字段的访问器,该字段需要是一个数组(或其他支持下标的内容),例如
class School
attr_reader :students
def initialize()
@students = []
end
end
Run Code Online (Sandbox Code Playgroud)
以上允许myschool.students[2]返回一些东西.假设students包含Student类的实例,该类可能是这样的:
class Student
attr_reader :first_name, :last_name
def initialize(first, last)
@first_name = first
@last_name = last
end
end
Run Code Online (Sandbox Code Playgroud)
现在你的例子myschool.students[2].first_name,应该工作.
对于第二个例子,mystudent.school.address你需要有一个school在外地Student类和address领域School类.
棘手的一点是School和Student实例相互指向,所以你需要在某些时候设置这些引用.这将是一个简单的方法:
class School
def add_student(student)
@students << student
student.school = self
end
end
class Student
attr_accessor :school
end
Run Code Online (Sandbox Code Playgroud)
你仍然需要添加address字段以及可能还有其他一些我错过的东西,但这应该很容易.
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |