gpt4 book ai didi

smalltalk - 对于 :ifAbsent: if you don't need a full block? 之类的消息,可以将 [ 和 ] 留在外面吗?

转载 作者:行者123 更新时间:2023-12-04 11:38:35 24 4
gpt4 key购买 nike

在 Smalltalk(特别是 Pharo/Squeak)中,我想知道是否可以将“[”和“]”作为消息的参数省略掉,例如 at:ifAbsent: 如果你不需要一个块,像这样;

^ bookTitles at: bookID ifAbsent: ''.


^ books at: bookID ifAbsent: nil.

代码有效是因为(在 Pharo/Squeak 中)Object>>value 只返回自身。但是我想知道这种用法是如何被接受的,或者您是否应该始终键入 [ 和 ],即使您不关心该参数是否被快速评估或多次评估。

最佳答案

签名:

at: key ifAbsent: aBlock 

声明使用块作为第二个参数的意图......
但是 Smalltalk 不是强类型语言,那么,你可以传递什么样的对象呢?任何理解消息 #value 的类型,因此,在每种情况下都要小心 #value 的每个特定含义,但要利用多态性!

关于smalltalk - 对于 :ifAbsent: if you don't need a full block? 之类的消息,可以将 [ 和 ] 留在外面吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21496982/

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