提问人:LF00 提问时间:11/10/2023 更新时间:11/10/2023 访问量:50
为什么这个 php 函数有两个可变长度参数?[复制]
Why this php function has two variable-length parameters? [duplicate]
问:
在手动可变长度参数列表中,应该只有一个可变长度参数作为函数的最后一个参数。
但是为什么这个opentelemetry-php api函数:有两个呢?return $c(...$a, ...($a = []));
function trace(SpanInterface $span, Closure $closure, iterable $args = [])
{
$s = $span;
$c = $closure;
$a = $args;
unset($span, $closure, $args);
$scope = $s->activate();
try {
/** @psalm-suppress InvalidArgument */
return $c(...$a, ...($a = []));
} catch (Throwable $e) {
$s->setStatus(StatusCode::STATUS_ERROR, $e->getMessage());
$s->recordException($e, ['exception.escaped' => true]);
throw $e;
} finally {
$scope->detach();
$s->end();
}
}
答:
3赞
Nigel Ren
11/10/2023
#1
您制作的可变长度参数列表引用用于声明函数。如果您有 2 个声明的变量 - 它如何区分要将其添加到哪个变量。...
而例子
return $c(...$a, ...($a = []));
正在调用函数。这里是将数组值添加为参数的情况。
评论
0赞
LF00
11/13/2023
你能在这里解释一下第二部分吗?为什么要分配一个空数组然后展开它?$a
1赞
Nigel Ren
11/13/2023
@LF00,对不起 - 看起来他们试图确保某些东西被传递 - 但你可能不得不问原来的编码员。
评论
$c