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

Jam*_*ord 5 dart dart-polymer

在我对Polymer Dart 1.0.0的探索中,我发现了事件和观察者方法,我被迫使用这种模式

@reflectable
void someEvent([_, __]) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者以观察者的方法

@Observe('someField')
void someFieldChanged([_, __]) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我理解方括号的用途,可选参数,我也理解如果你不关心传递的参数,你可以用下划线表示这个参数.令我惊讶的是我看到的例子使用双下划线__作为方括号之间的第二个符号.当我再次尝试仅使用一个下划线时,我得到一个重复的形式参数错误.你不关心的第二个参数是否与第一个不同?按照这个逻辑,如果我包含第三个,是否意味着它必须是一个三重下划线___?

谢谢.

Ale*_*uin 8

没什么特别的._因为__作为a仅有变量标识符._通常用于命名未使用的变量.这里有2个未使用的变量,第一个是命名的_,第二个是__.随着多个未使用的变量是很常见他们的名字_,__,___...或者_1,_2,_3...

  • 是.dart中的标识符必须以`$`,`_`或字母开头,并继续使用零或多个数字,字母,`$`或`_`.这意味着`_`只是一个变量,就像`a`一样.它有一个私有名称,但由于它是一个局部变量,这并不意味着什么. (3认同)