隐藏的数据类型: 容器

容器一般用于多变量同时赋值,也有的语言用于提供函数返回多个值。函数

大多数语言均可以进行多变量同时赋值,在等号的右边就是一个隐含的容器code

x, y = 1, 2

Perl5 中有显式的容器,容器能够命名成一个变量:容器

my @sets = (1, 2);
my ($x, $y) = @sets

而在 Go 语言中,返回多个值的函数隐含的提供了容器的功能:变量

x, y := return_multi_value()
func return_multi_value() (int, int) { 
  return 1, 2;

}数据类型

容器和列表不一样,列表是一个独立的值,在传递和复制的过程当中不会发生变化,而容器在赋值操做符的右侧;在做为参数传递后,会自动的解开,在 Perl6 中有显式的列表到容器的转换操做符 |:命名

my @sets = 1, 2;
 accept_multi_args(|@sets);

在大部分的语言中,容器的概念是隐藏起来的,不能复制,不能命名,不能显式的解开,也不能和列表互相转换。数据

一个能正确使用容器的语言,应当是这样的:语言

@sets = 1, 2
    x, y = @sets // x == 1; y == 2
    accept_multi_value(@sets)  // 容器能够直接做为等价多个参数的形式传递到函数中
 var_array = ( @sets )  // var_array 如今是真正的列表

Perl6 中有相似容器的概念,但不能自动的解耦。 Perl5 中把容器和列表混淆在一块儿。 其余的语言都会把这种数据类型隐藏起来。co

相关文章
相关标签/搜索