2016 - 2024

感恩一路有你

immutable原理 python中的immutable和mutable(不可变与可变)应该怎么理解?

浏览量:1100 时间:2021-03-10 21:22:56 作者:admin

python中的immutable和mutable(不可变与可变)应该怎么理解?

Python数据类型分为可变和不可变。不可变类型包含字符串(STR)、整数(int)、元组(tuple);变量类型包含列表(list)、字典(dict)。它是否为变量类型取决于内存单元的值是否可以更改。如果内存单元的值不可更改,在对对象本身进行操作时,必须在内存的另一部分申请另一个内存单元(因为旧的内存单元是不可变的),旧的内存单元将被丢弃(如果有其他的ref,ref数将减少1,类似于Unix中的硬链接);如果它是可变的,在对对象进行操作时,不需要再使用它来申请其它地方的内存,只需要在这个对象之后连续(/-)地申请,即它的地址不变,但区域会变长或变短。

Scala中的Seq和List之间的区别?

Scala的SEQ将是Java的列表,Scala的列表将是Java的LinkedList。请注意,SEQ是一个trait,相当于Java的接口,但相当于即将推出的defender方法。Scala的list是一个抽象类,由nil和::扩展,后者是list的具体实现。因此,Java中的list是一个接口,scala中的list是一个实现。另外,Scala的列表是不可变的,这与LinkedList不同。事实上,Java没有等价的不可变集(只读的东西只能保证新的对象不能被更改,但是您仍然可以更改旧的对象,所以“只读”一个)。Scala的列表由编译器和库进行了高度优化。它是函数式编程中的基本数据类型。但是,它有局限性,对于并行编程来说是不够的。如今,向量是一个比列表更好的选择,但习惯很难打破。Seq是一个很好的泛化序列,所以如果你对一个接口编程,你应该使用它。请注意,实际上有三种:收藏序列, 集合.mutable.Seq以及collection.immutable.Seq集合,这是范围的“默认”导入。genseq和parseq。后一种方法在可能的情况下并行运行。前者是SEQ和parseq的父级,当代码的并行性无关时,这是一种适当的泛化。它们相对较新,所以人们不会使用它们。

immutable原理 java immutable immutable中文什么意思

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。