PHP 的可变长度参数 `...` 标记应该指什么?
What should PHP's variable-length argument `...` token be referred to as?
我最近了解到 PHP 的 ... 标记(参考 docs),它用于支持可变长度参数列表。这个令牌的术语是什么或者它是如何发音的?如果它没有名字,它们在另一种有名字的语言中是否有任何类似的功能?
TL;DR: 标记名称是 'T_ELLIPSIS',在函数声明中使用使这个函数成为 'variadic',在调用带有保存参数的数组的函数时使用,它被称为 'argument unpacking'.
它的名字是 T_ELLIPSIS
,我发现在 psysh-session 中使用 token_get_all
和 token_name
:
>>> token_get_all('<?php function testit(...$a) { echo $args;}')
=> [
[
379,
"<?php ",
1,
],
....
[
391,
"...",
1,
],
....
>>> token_name(391)
=> "T_ELLIPSIS"
>>>
编辑:我可能从字面上理解你的意思——我以为你问的是令牌名称,但考虑到否决票,我怀疑你的意思是,程序员如何在演讲和写作中引用它(显然“splat”,根据评论)
编辑 2:在最后一个参数之前的函数定义中使用,在其他语言中,在 PHP 中用省略号定义的函数将被称为 'variadic function':
>>> function f(...$a) { return $a; }
>>> f(1, 2, 3, 4)
=> [
1,
2,
3,
4,
]
>>>
编辑 3:最后:如果您有一个包含要传递给函数的值的数组,您可以使用 ...
实现“参数解包”
>>> function f($a, $b, $c) { return "{$a}-{$b}-{$c}"; }
>>> f(...[1,2,3]);
=> "1-2-3"
>>>
我最近了解到 PHP 的 ... 标记(参考 docs),它用于支持可变长度参数列表。这个令牌的术语是什么或者它是如何发音的?如果它没有名字,它们在另一种有名字的语言中是否有任何类似的功能?
TL;DR: 标记名称是 'T_ELLIPSIS',在函数声明中使用使这个函数成为 'variadic',在调用带有保存参数的数组的函数时使用,它被称为 'argument unpacking'.
它的名字是 T_ELLIPSIS
,我发现在 psysh-session 中使用 token_get_all
和 token_name
:
>>> token_get_all('<?php function testit(...$a) { echo $args;}')
=> [
[
379,
"<?php ",
1,
],
....
[
391,
"...",
1,
],
....
>>> token_name(391)
=> "T_ELLIPSIS"
>>>
编辑:我可能从字面上理解你的意思——我以为你问的是令牌名称,但考虑到否决票,我怀疑你的意思是,程序员如何在演讲和写作中引用它(显然“splat”,根据评论)
编辑 2:在最后一个参数之前的函数定义中使用,在其他语言中,在 PHP 中用省略号定义的函数将被称为 'variadic function':
>>> function f(...$a) { return $a; }
>>> f(1, 2, 3, 4)
=> [
1,
2,
3,
4,
]
>>>
编辑 3:最后:如果您有一个包含要传递给函数的值的数组,您可以使用 ...
实现“参数解包”
>>> function f($a, $b, $c) { return "{$a}-{$b}-{$c}"; }
>>> f(...[1,2,3]);
=> "1-2-3"
>>>