workspace 对我来说 return 不是正确的值

workspace does not return the correct value for me

我的一些代码有问题。

如果我写 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',它们保存在 'Komponenty' 列(设置)中,用于 'Recenzes'和 'Sekces'.

有人知道为什么吗?

由于 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消息不熟悉,所以不知道是必要的还是多余的)。