关于xx语言的设计想法
在这篇文章里记录对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次并连接起来,而字符串除以数字是非法的。