当我希望更新一个值但是检测该值的旧值时,如果没有++,--操作符会写的很麻烦,大家有什么好办法没有
#本来可以这样写
break if str[v++] != 3
#但是现在需要这样
if str[v] != 3
v++
break
else
v++
这些年的语言,都在避免 ++
--
,比如 Swift、Rust,Go 虽然有,但是也有人提议在 Go 2 删掉,用 var += 1
写法代替,当然不同意的人也有很多
这种写法和在 if 语句中赋值一样,非常容易产生误解,万一产生 bug,要排查好久,最关键的是会坑后来读代码的人。
不要追求代码的简短,要追求可读性。
现在的这些语言从本质上说。其实根本没有++ --
的操作。。。本质是对象。。其实是先创建一个新的对象。然后将旧的对象指向新的对象(((。。。。而 C 的++ --
是直接改变内存里的值。。
变量本身是不可变的。变量可变只是实现了一种语法糖(
同意 #8 同学,今天看书有看到,Ruby 里的整数是立即值 (immediate value),当一个整数被赋值给变量时,比如 x=1
,x 持有的是 1 这个值本身,而不是地址的引用,如果这时候再写y=1
,x 和 y 指向的是同一个对象1
,而这时候x++
就相当于1++
,会把唯一的1
对象变成2
,这样就不合理了。简而言之他们是不可变的,所以也就没有前后加减运算符了。另,Symbol 也是如此。