gpt4 book ai didi

object - 在smalltalk中创建字符串时会发生什么?

转载 作者:行者123 更新时间:2023-12-02 08:14:45 24 4
gpt4 key购买 nike

我是 Smalltak 的菜鸟,但我需要为我的论文了解一些东西。创建字符串或任何其他对象时到底发生了什么?例如,让我们这样做:

fruit <- 'apple'

当我尝试检查对象水果时,我发现它有 5 个实例变量。如果我将“梨”分配给水果,它就会有 4 个实例变量。因此,解释器创建了字节串的新实例,为每个字符添加了所需的安装变量,并为它们分配了正确的值?我相信还有更多的事情发生,但我在任何地方都找不到它,而且我没有时间正确学习闲聊。你能给我解释一下吗,或者给我一些可以找到它的链接吗?

最佳答案

字符串是对象。对象包含实例变量并响应消息。在 Smalltalk 中,基本上有两种实例变量:命名实例变量通过名称引用(如 Person 对象中的 name 或phoneNumber),索引实例变量通过数字引用。字符串使用索引实例变量。

考虑以下示例:

fruit := String new: 5.
fruit at: 1 put: $a;
at: 2 put: $p;
at: 3 put: $p;
at: 4 put: $l;
at: 5 put: $e.

这将创建一个包含 5 个字符空间的字符串。然后它获取 Fruit 变量来指向该对象。然后它将 5 个字符写入字符串中。结果是字符串“apple”。

由于字符串非常常用,因此编译器支持特殊语法在编译时创建字符串。

fruit := 'apple'

在此示例中,“apple”是字符串文字。 Smalltalk 编译器在编译该行时创建该字符串。当您运行该行时,您将使fruit指向字符串“apple”,该字符串有5个包含Character对象的索引实例变量。

关于object - 在smalltalk中创建字符串时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10625148/

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