在红宝石对象内导航非常简单。考虑下面的伪代码,并利用这一段为例输入,下面的调用有意义,工作原理:导航Ruby对象
forth_word = Par.sentence[0].word[3]
puts forth_word.text #"ruby"
puts forth_word.type #:noun
伪包含在每个其他中类代码:(排序的嵌套,但不是严格OOP意义)
class Paragraph
@page_number = #1 (default)
@sentences = []
end
class Sentence
@is_a_quote = #false (default)
@words = []
end
class Word
@text =# "ruby"
@type =# :noun
def in_a_quote?
#... return [email protected]_a_quote
end
def on_page
#... return Paragraph.Sentence.page
end
end
,当我尝试向上导航Ruby对象树...又名询问从里面的Word属于句子或段落对象的信息最棘手的部分就越大。任何建议,我怎么能代码的最后2种方法:
puts forth_word.in_a_quote #false
puts forth_word.on_page #1
这种类型的数据结构不适合您的要求。将数据存储在sql中,并使用ORM按照您的设想检索数据。 –
请将“sudo”更改为“pseudo”。这让我疯狂。而且,对于'Sentence'和'Word'来嵌套,你需要定义它们'class Sentence
@CarySwoveland:Omigod,你是个天才。我试图弄清楚这与超级用户权限有什么关系......但是,在你的下一个评论中你错了:OP不是按层次结构(is-a)嵌套,而是通过遏制(has- a,在实例变量中),这是正确的做法:“Word”当然不是“Sentence”类型,也不是“Paragraph”类型的“Sentence”。 – Amadan