为什么这个PHP函数有两个可变长度的参数?

bxgwgixi  于 2023-11-16  发布在  PHP
关注(0)|答案(1)|浏览(118)

此问题在此处已有答案

Reference Guide: What does this symbol mean in PHP? (PHP Syntax)(25个回答)
Using splat to pass and receive function arguments with an associative array(1个答案)
4天前关闭。
从手动可变长度参数列表中,应该只有一个可变长度参数作为函数的最后一个参数。
但是为什么这个opentelemetry-php api functionreturn $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();
    }
}

字符串

3b6akqbq

3b6akqbq1#

变量长度参数列表的引用是用来声明函数的。如果你有2个...声明的变量--它怎么能区分把它加到哪个变量上呢?
而这个例子

return $c(...$a, ...($a = []));

字符串
调用一个函数。这里是一个将数组值作为参数添加的例子。

相关问题