在这篇文章里记录对xx语言的一些设计想法,可能不成熟或不可行,但有想法就记录下来总是好的。

5月1日 —— 字符串加、减、乘、除

Python里面允许字符串相加,如'hello, ''world'相加的结果是hello, world,这是符合预期的,在C语言中需要调用strcat()函数来完成,在C++中string类型重载了操作符+,也就是说字符串在Python里面是“一等公民”,地位类似于整数、浮点数、字符。但是Python却不支持字符串的相减操作,为什么呢?估计有下面的理由:

  • 'ugly' - 'beautiful'该等于什么呢?首先,’ugly’比’beautiful’字符数量更少,小的数减去大的数可以是负数,但短的字符串减去长的字符串结果是什么呢?其次,该从’ugly’中减去’beautiful’的什么?
  • 字符串相减效率是个问题?如'abaaaabbbbccccb' - 'ab'要求去掉前一个字符串中所有的’ab’出现。如果例子复杂些,那么就更‘痛苦’了……

从上面的考虑看来,从一个字符串中减去一个字符要合理些,如'hello' - 'l'就等于'heo',但即使这样,也要考虑空字符串减去字符的情况,如'' - 'c'等于什么呢?

Python中'hello' * 3的结果是'hellohellohello',即将'hello'重复3次并连接起来,而字符串除以数字是非法的。