如何解决工作区没有为我返回正确的值
我有一些代码有问题。
如果我写 Recenzes select: [:a | a komponenta nazev = 'Hitachi P21']
,我会得到一些正确的记录。但如果我使用这样的东西:
| brzdy |
brzdy := (((
(Sekces select: [:b | b nazev = 'Brzdy']) collect: [:b | b komponenty]) flatten)
select: [:c | c vyrobce nazev = 'Hitachi']) collect: [:d | d nazev].
我可以使用 ^ 命令获得“Hitachi P21”。但如果我在这里使用变量 'brzdy':Recenzes select: [:a | a komponenta nazev = brzdy]
我什么也得不到。
简而言之。我想显示“Komponenty”的“Recenzes”,它们位于“Sekces”中,值为“Brzdy”,它们保存在“Recenzes”和“Sekces”的“Komponenty”(集)列中。
有人知道为什么吗?
解决方法
由于 brzdy
是 #collect:
消息的结果,因此它是字符串的集合,而不是单个字符串。因此,没有元素 a
会满足条件 a komponenta nazev = brzdy
,因为您将比较不同类的对象。尝试一下
Recenzes select: [:a | brzdy includes: a komponenta nazev]
作为旁注,请记住,您可以使用 select:thenCollect:
而非 (select: blah) collect: bluh
来消除某些括号。例如
brzdy := (Sekces select: [:b | b nazev = 'Brzdy'] thenCollect: [:b | b komponenty]) flatten
select: [:c | c vyrobce nazev = 'Hitachi']
thenCollect: [:d | d nazev]
(我不熟悉 #flatten
消息,所以我不知道它是必要的还是多余的)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。