gpt4 book ai didi

smalltalk - 解释一段Smalltalk代码?

转载 作者:行者123 更新时间:2023-12-04 13:44:08 25 4
gpt4 key购买 nike

我无法理解这段Smalltalk代码:

[(line := self upTo: Character cr) size = 0] whileTrue.

有人可以帮忙解释一下吗?

最佳答案

如果您拥有代码的来源图像,那么一件容易的事就是在其上运行调试器并逐步执行。

如果您是在上下文之外遇到代码的,例如邮件列表中的帖子,那么您可以浏览其中一条消息的实现者,并查看其作用。例如,#size和#whileTrue是相当标准的,因此我们暂时将其略过,但是#upTo:听起来很有趣。它使我想起了流方法,并在其上调出实现者来确认(在Pharo 1.1.1中),ReadStream对其进行了定义。没有方法注释,但是OmniBrowser在方法名称旁边显示一个小箭头,指示它是在父类(super class)中定义的。如果检查直接父类(super class)PositionableStream,则会有一个很好的方法注释,说明该方法的作用,该方法从流中抽取,直到到达参数指定的对象为止。

现在,如果我们以逻辑方式解析代码,则看起来:

  • 从流中读取一行(即最多cr)
  • 如果为空(大小= 0),则循环继续
  • 如果不是,则返回

  • 因此,代码将跳过所有空行并返回第一个非空行。为了确认,我们可以在多行字符串上将其传递给流,然后像这样运行它:
    line := nil.
    paragraph := '


    this is a line of text.
    this is another line
    line number three' readStream.
    [(line := paragraph upTo: Character cr) size = 0] whileTrue.
    line. "Returns 'this is a line of text.'"

    关于smalltalk - 解释一段Smalltalk代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840889/

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