无法理解为什么groovy list api会有类
的方法a)允许修改当前列表
b)返回一个新列表,
e.g。
aList-['Hello','World']
// modifying a list
aList.set(2,'Modifying') //will modify aList itself, i.e. aList=['Hello','World','Modifying'
//create a new list without modifying self
aList.plus(1,'Worlds') //aList is not modified, although this statements creates a new list: ['Hello','Worlds','Modifying']
我的问题是:为什么Groovy的作者不会坚持使用标准,即要么拥有完全不可变的集合,要么所有方法都要返回新的列表实例而不修改当前的集合实例,或者允许这样的方法作为'加'修改当前集合。对此有两个标准似乎有点不直观。
答案 0 :(得分:1)
Groovy包装Java并允许您调用现有的Java方法。
因此set
是一个操纵基础列表的Java method。因此,在Groovy中,它只是调用此方法并且您改变列表。
minus
,plus
和left-shift
是Groovy的补充,因此对于列表,它们的编写不会改变原始列表。
说到地图,left-shift
会改变地图,但我想这只是你必须记住的事情。