sách gpt4 ai đã đi

Perl6: Đẩy một mảng vào một mảng các mảng có một phần tử có vẻ không hoạt động như mong đợi

In lại 作者:行者123 更新时间:2023-12-02 07:16:39 30 4
mua khóa gpt4 Nike

当我将数组推送到只有一个数组作为其唯一元素的数组数组时,为什么会得到这种数据结构?

use v6;

my @d = ( [ 1 .. 3 ] );
@d.push( [ 4 .. 6 ] );
@d.push( [ 7 .. 9 ] );


for @d -> $r {
say "$r[]";
}
# 1
# 2
# 3
# 4 5 6
# 7 8 9

say @d.perl;
# [1, 2, 3, [4, 5, 6], [7, 8, 9]]

1 Câu trả lời

Đây là The single argument rule 中描述的预期行为.

Perl 6 has been through a number of models relating to flattening during its evolution, before settling on a straightforward one known as the "single argument rule".

The single argument rule is best understood by considering the number of iterations that a for loop will do. The thing to iterate over is always treated as a single argument to the for loop, thus the name of the rule.

for 1, 2, 3 { } # List of 3 things; 3 iterations
for (1, 2, 3) { } # List of 3 things; 3 iterations
for [1, 2, 3] { } # Array of 3 things (put in Scalars); 3 iterations
for @a, @b { } # List of 2 things; 2 iterations
for (@a,) { } # List of 1 thing; 1 iteration
for (@a) { } # List of @a.elems things; @a.elems iterations
for @a { } # List of @a.elems things; @a.elems iterations

... the list constructor (the infix:<,> operator) and the array composer (the [...] circumfix) follow the rule:

[1, 2, 3] # Array of 3 elements
[@a, @b] # Array of 2 elements
[@a, 1..10] # Array of 2 elements
[@a] # Array with the elements of @a copied into it
[1..10] # Array with 10 elements
[$@a] # Array with 1 element (@a)
[@a,] # Array with 1 element (@a)
[[1]] # Same as [1]
[[1],] # Array with a single element that is [1]
[$[1]] # Array with a single element that is [1]

The only one of these that is likely to provide a surprise is [[1]], but it is deemed sufficiently rare that it does not warrant an exception to the very general single argument rule.

所以为了让这项工作我可以写:

my @d = ( [ 1 .. 3 ], );
@d.push( [ 4 .. 6 ] );
@d.push( [ 7 .. 9 ] );

或者也

my @d = ( $[ 1 .. 3 ] );
@d.push( [ 4 .. 6 ] );
@d.push( [ 7 .. 9 ] );

关于arrays - Perl6 : Pushing an array to an array of arrays with one element seems not to work as expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34872182/

30 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com