gpt4 book ai didi

smalltalk - smalltalk 中的文字字符串是否可变?

转载 作者:行者123 更新时间:2023-12-02 03:18:34 26 4
gpt4 key购买 nike

1) stringstring literal 有什么区别

2) 一本书说 'zero' at: 1 put: $h 会失败,因为文字是不可变的,但如果我执行 'zero' copy at: 1 put: $h 之所以有效,是因为复制文字字符串会产生另一个不是文字的字符串。糊涂了!

最佳答案

假设您有一个方法来回答文字字符串(文字意味着其内容在源代码中按字面意义写入)

MyClass>>constantString
^'foo'

现在,如果这个文字字符串是可变的,你可以直接执行这个片段

MyClass new constantString at: 1 put: $b.

然后 MyClass 的每个实例都会对#constantString 回答'boo'。但是,您不明白为什么,因为源代码仍然指示“foo”。讨厌...

一些 Smalltalk 方言使这些文字字符串不可变,以避免这种意外的意外情况。有些没有虚拟机对不变性的支持,并让用户承担全部责任。

关于smalltalk - smalltalk 中的文字字符串是否可变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11558573/

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