Markus,

'hello' is a literal string constant, part of the set of constants of a method 
(or a doit which like a temporary method disconnected from a class).

Constants like these are managed by the compiler and can be shared between 
different expressions to avoid duplication.

Changing such a constant is dangerous because it means you are changing 
static/compiled code. Consider a method like

name
 ^ 'Markus'

I could call this method and change the returned string destructively in place. 
Next time someone calls it, s/he would get the modified string. Even worse, 
s/he would not understand since the source code did not change.

In the past it was not possible to mark such strings as being constant, now we 
can. Which is a big win.

You can use #copy to get a string that you can modify.

'hello' copy at: 2 put: $a; yourself

HTH,

Sven

> On 28 Feb 2021, at 00:50, Markus Wedel <m...@markus-wedel.de> wrote:
> 
> Hi all,
> 
> strings in Playground are read only in Pharo 9.0 Build 1153 so that
> 
> 'hello' at: 2 put: $a; yourself
> ctrl+p
> 
> This throws an error:
> „Modification forbidden: ‚hello‘ is read-only, hence its field cannot be 
> modified with $a
> 
> which is actually a very nice error message but is this supposed to happen?
> The example does work in Pharo 8 without problems.
> 
> 
> Greetings
> Markus

Reply via email to