gpt4 book ai didi

smalltalk - 在 smalltalk 中传递消息有什么特别之处

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

我正在阅读 Smalltalk 的介绍。
在 C++ 中,类中声明的函数可以被该类的对象调用,类似地,在 Smalltalk 中,一个关键字,称为消息,写在对象名称旁边。
(不太了解但也想在这里问一下是否有响应消息的唯一方法要执行?)

基本上,在我幼稚的头脑中,这似乎只是语法风格的不同。但是,我想知道在编译或内存结构方面,这种调用差异在内部是否有任何意义。

提前致谢。

P.S:我向你们所有人鞠躬,感谢你们的时间和答案。非常感谢。

最佳答案

根本区别在于,在 Smalltalk 中,消息的接收者可以完全控制该消息的处理方式。它是一个真正的对象,而不是带有对其进行操作的函数的数据结构。

这意味着在 Smalltalk 中,您可以向任何对象发送任何消息。编译器对此没有任何限制,都是在运行时处理的。在 C++ 中,您只能调用编译器知道的函数。

此外,Smalltalk 消息只是符号(唯一字符串),而不是像 C++ 中那样的内存中的函数地址。这意味着很容易以交互方式或通过网络连接发送消息。有一个perform:方法,让您发送给定字符串名称的消息。

一个对象甚至会收到它没有实现的消息。虚拟机检测到这种情况并创建一个 Message对象,然后发送 messageNotUnderstood:信息。同样,如何处理未知消息是对象的唯一责任。大多数对象只是继承了引发错误的默认实现,但对象也可以自己处理它。例如,它可以将这些消息转发到远程对象,或将它们记录到文件等。

关于smalltalk - 在 smalltalk 中传递消息有什么特别之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42498438/

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