Smalltalk - 是否可以通过方法将字符串添加到String实例?
基本上我想要的是:
renderThisOn: aString
aString append: 'whatever text I want'
Run Code Online (Sandbox Code Playgroud)
基本上我喜欢String实例(ByteString等),就像Seaside中的"html"对象一样.我把它作为一个参数传递给多个方法,每个方法都向它添加一些信息.
从实际角度来看,答案是否定的,不可能改变字符串的大小.您可以修改String的字符:
a := 'abc'.
a at: 2 put: $x.
a = 'axc' "true"
Run Code Online (Sandbox Code Playgroud)
因此,当您连接两个字符串时,您将获得第三个字符串,而其他两个字符串保持不变
s := 'abc'.
t := 'def'.
u := s , t.
s = 'abc'. "true"
t = 'def'. "true"
Run Code Online (Sandbox Code Playgroud)
话虽如此,实际上有一种方法可以增长(或缩小)一个String.想法是使用become:(或becomeForward:).此消息将使用对参数的引用替换对接收方的所有引用.在你的情况下:
s := 'abc'.
t := 'def'.
assoc := s -> 3 "referene to s"
s become: s , t.
s = 'abcdef'. "true"
assoc key == s "true"
Run Code Online (Sandbox Code Playgroud)
我开始回答的原因是你不能改变字符串的大小是因为在绝大多数情况下使用become:是过度的,建议的做法是检查代码并消除修改对象结构的需要.
| 归档时间: |
|
| 查看次数: |
5183 次 |
| 最近记录: |