左值的相关运算符
左值
1,是指位于表达式左边的变量,可以是与操作符直接结合的形成的,如自增,自减;也可以是赋值,位运算。
可以支持操作符有:-=
,+=
,*=
,%=
,|=
,&=
,^=
,++
,--
。
特殊的运算符delete
delete
运算符,用于将某个变量重置为初始值。对于整数,运算符的效果等同于a = 0
。而对于定长数组,则是把数组中的每个元素置为初始值,变长数组则是将长度置为0。对于结构体,也是类似,是将所有的成员均重置为初始值。
delete
对于映射类型几乎无影响,因为键可能是任意的,且往往不可知。所以如果你删除一个结构体,它会递归删除所有非mapping的成员。当然,你是可以单独删除映射里的某个键,以及这个键映射的某个值。
需要强调的是delete a
的行为更像赋值,为a
赋予一个新对象。我们来看看下文的示例:
|
|
通过上面的代码,我们可以看出,对于值类型,是值传递,删除x
不会影响到data
,同样的删除data
也不会影响到x
。因为他们都存了一份原值的拷贝。
而对于复杂类型略有不同,复杂类型在赋值时使用的是引用传递。删除会影响所有相关变量。比如上述代码中,删除dataArray
同样会影响到y
。
由于delete
的行为更像是赋值操作,所以不能在上述代码中执行delete y
,因为不能对一个storage的引用赋值