gpt4 book ai didi

smalltalk - smalltalk中循环内的条件

转载 作者:行者123 更新时间:2023-12-01 02:06:13 25 4
gpt4 key购买 nike

我正在尝试使用循环绘制符号链。我正在这样做,但它总是绘制x界...

1 to: x do: [
(self lastWasSquare)
ifTrue: [ self drawCircle]
ifFalse: [ self drawSquare]
]

我也试过:
x timesRepeat: [ 
(self lastWasSquare)
ifTrue: [ self drawCircle]
ifFalse: [ self drawSquare]
].

但还是画圈。我还尝试通过添加 :n | 来做到这一点变量到循环并询问是否偶数,但同样,它总是执行循环代码。
我究竟做错了什么?
谢谢

最佳答案

您好像调用了 self lastWasSquare不断返回true让您的#ifTrue:ifFalse:不断进入调用 self drawCircle 的 block .您可以:

  • 确保您的 drawCircledrawSquare方法正确设置您的lastWasSquare实例变量(至少我假设这只是一个 getter 方法)。
  • 将最后绘制的项目是圆形还是正方形的决定移动到临时变量中。

  • 如果您需要 lastWasSquare,第一种方法会更好。值您正在使用的方法之外的任何地方。第二种方法更好,如果它是您绘制圆形或正方形的唯一位置(保持范围尽可能小)并且看起来像这样:
    | lastWasSquare |
    lastWasSquare := false.
    x timesRepeat: [
    lastWasSquare
    ifTrue: [ self drawCircle ]
    ifFalse: [ self drawSquare ].
    lastWasSquare := lastWasSquare not
    ].

    所以你不断切换 lastWasSquare true之间和 false ,它会绘制交替的形状。 (我假设这就是你说“绘制符号链”时想要实现的目标......)

    如果这些都不适用,那么正如 Uko 在评论中所说,您需要发布更多代码,以便我们能够为您提供帮助。

    关于smalltalk - smalltalk中循环内的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32430884/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com