2015-10-15 93 views
4

在我的高分子飞镖1.0.0的探索,我已经找到了事件,并观察方法,我不得不使用这种模式作为函数/类方法的参数,双下划线在单个下划线之后的用途是什么?

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

或观察员方法

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

我了解方括号是什么,可选参数,我也明白,如果你不关心传递的参数,你可以用下划线表示这个参数。令我感到意外的是,我看到的例子是使用双下划线__作为方括号之间的第二个符号。当我试图再次使用一个下划线时,我得到一个重复的形式参数错误。有没有理由为什么你不关心的第二个参数必须与第一个参数不同?通过这个逻辑,如果我包含第三个,这是否意味着它必须是一个三重下划线___?

谢谢。

回答

5

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

+0

所以这下划线来表示你不关心的参数,只是惯例,以及你说,下划线可以用作变量标识符? –

+3

是的。飞镖中的标识符必须以'$','_'或一个字母开头,并且继续使用零个或多个数字,字母,''''或'_'。这意味着'_'只是一个变量,就像'a'一样。它有一个私有名称,但由于它是一个局部变量,所以并不代表任何意义。 – lrn

+0

谢谢。你有时会忽视这些明显的事情。非常感激。 –