gpt4 book ai didi

smalltalk - 从确保 block 内的 block 返回的语义是什么?

转载 作者:行者123 更新时间:2023-12-04 15:21:51 25 4
gpt4 key购买 nike

假设我们有以下方法序列:

m1
self m2: [^1]

m2: block
self m3: block.
Processor := nil "crash!"

m3: block
[block value] ensure: [^2]

问题是 anObject m1 的值是多少? ?

换句话说,就是 [ˆ2]的语义明确定义为确保块?有两种可能:
  • 在确保块中忽略块返回 : 在这种情况下 m1将返回 1 .
  • 块的返回在受保证的块中得到尊重 : 在这种情况下,图像会崩溃。

  • 请注意,我不是在问会发生什么。我对执行流程的定义很感兴趣。

    编辑

    COROLLARY 1(正如 Lukas 在下面的回答中所证实的那样):不是一种好的编程风格!

    最佳答案

    查看 Draft of ANSI Smalltalk Standard 的第 23 页描述 return 语句及其与 ensure: 的交互块:

    If the evaluation of a termination block concludes with the execution of a return statement the result is undefined.

    关于smalltalk - 从确保 block 内的 block 返回的语义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852376/

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