我正在尝试将NFL团队组织成Ruby中的数据结构。我的目标是轻松查询,知道巴尔的摩乌鸦队是AFC(会议)和AFC North(分区)。
我还想很容易地看到哪些球队在AFC(其中16支)以及哪支球队在AFC北部(其中4支)。
现在我在阵列上使用数组,但我确信有更好的方法可以做到这一点。
根据我的数据现在的结构方式,我必须把nfl [0] [0] [0]打印出Baltimore Ravens(第一个0是AFC / NFC,第二个是会议,第三个是分区) 。这似乎太复杂了。
任何帮助或见解都会令人惊叹!
答案 0 :(得分:5)
它们应该是具有关系的类,而不是试图利用本机ruby数据结构。即使课程不做事,你也会从轨道关系中获得很多自然的声音代码。
我更愿意说:
team = Team.find_by_name("Ravens")
大于
team = nfl[0][0][0]
您还可能获得几乎免费的其他有用电话:
team = Team.find_by_city("Baltimore") # also gets you the ravens
当你想要抓住一个部门的所有团队时:
all_nfc_teams = Division.find_by_name("NFC").teams
比
更具可读性all_nfc_teams = nfl[0][1]
我可以想象各种其他有用的语义,比如找到AFC的所有第4周比赛,或者通过输赢来命令分组。您可以在团队上定义范围,以便您可以检索具有非常明确语义的团队集合。
all_nfc_teams = Team.nfc
答案 1 :(得分:1)
“最好”是主观的。它还取决于组织实体的性质。
部门和/或会议除了举办团队之外还做其他事吗?如果是这样,那么他们应该是班级。
否则哈希可能没问题,虽然我可能会将它们封装在一个便利类中,隐藏哈希结构,提供命名团队访问等等。