双下划线的目的是什么,在单下划线之后,作为函数/ ​​class 方法的参数?

What is the purpose of the double underscore, after a single underscore, as a parameter to a function / class method?

在探索 Polymer Dart 1.0.0 时,我发现对于事件和观察者方法,我不得不使用这种模式

@reflectable
void someEvent([_, __]) {
    ...
}

或观察者方法

@Observe('someField')
void someFieldChanged([_, __]) {
    ...
}

我明白了方括号是干什么用的,可选参数,我也明白如果你不关心传递的参数,可以用下划线来表示这个参数。令我惊讶的是,我看到的示例使用双下划线 __ 作为方括号之间的第二个符号。当我再次尝试只使用一个下划线时,出现重复的形参错误。为什么您不关心的第二个参数必须与第一个参数不同?按照这个逻辑,如果我包括第三个,是否意味着它必须是三重下划线 ___?

谢谢。

没什么特别的。 _ as __ as a 只是变量标识符。 _ 通常用于命名未使用的变量。 这里有 2 个未使用的变量,第一个命名为 _,第二个命名为 __。 对于多个未使用的变量,通常将它们命名为 ______ ... 或 _1_2_3...