容器一般用於多變量同時賦值,也有的語言用於提供函數返回多個值。函數
大多數語言均可以進行多變量同時賦值,在等號的右邊就是一個隱含的容器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