Thank you, Sven gradually clear. 1. Symbol as String subclass, only guarantees a symbol object only one in system, use ==; 2. keywords (selector name method name) are spectial symbols, without space or forbided characters; 3. perform: aSymbol, means perform: aKeyword, Should we add asKeyword to String, let perform: aString asKeyword not perform: aString asSymbol ?
Regards! Bing Liang At 2017-02-11 15:51:49, "Sven Van Caekenberghe" <s...@stfx.eu> wrote: >Hi Bing, > >Yes, any character is allowed in a Symbol. There is even special syntax that >allows such Symbols to be represented literally. > >'a b' asSymbol. > > => #'a b' > >Although it might be confusing, I don't see any problem. > >The concept of 'meaning' is defined by the user, the usage, not by the Symbol >itself. A Symbol with a space cannot be a selector (message/method) name, but >that does not mean a Symbol with a space could not be useful in some other >context. > >Regards, > >Sven > >> On 11 Feb 2017, at 05:56, lb <liangbin...@126.com> wrote: >> >> Hi, >> I know Symbol is subclass of String. >> Any string object can become symbol object by sending 'asSymbol' message.. >> I think symbol must has its meaning in comon use, so the symbol should be >> composed of alphabet or number ‘without space“. >> >> BUT There are not compliant below >> 1. ' ' asSymbol >>>> no meaning >> 2. '$%%&' asSymbol >>>> no meaning >> 3. 'sign' asSymbol = 'sign ' asSymbol >>> false because of space. >> 3. ' one two three ' asSymbol >>> I think It should become >> three symbols = #one, #two, #three >> >> >> Mybe my understanding is wrong. >> >> Bing Liang >> >> > >