晦涩的Dart语法

Nat*_*son 4 dart

在完成客户端编码Dart Route库示例时, 我遇到了这个片段.

 var router = new Router()
    ..addHandler(urls.one, showOne)
    ..addHandler(urls.two, showTwo)
    ..addHandler(urls.home, (_) => null)
    ..listen();
Run Code Online (Sandbox Code Playgroud)

我的问题是如何(_) => null工作?它似乎指定了一个返回null值的函数但是什么(_)意思呢?

Den*_*low 7

(_)意味着它是一个带有一个参数的函数,但你不关心那个参数,所以它只是命名_.你也可以写(ignoreMe) => null.这里重要的是,需要一个接受一个参数的函数.你用它做什么,是你的事.

  • 没有参数"()=> null"或无效函数"(){}"的函数的简写.但"(_)=> null"不是简写.因为这与"(x)=> null"和拉丁字母表中的其他选项相同.这是"(x){return null;}"的"简短形式" (2认同)

Ale*_*uin 7

(_) => null表示:一个函数,它接受一个名为_并返回的参数null.它可以被视为一种捷径(iDontCareVariable) => null.

没有参数的类似功能将是() => null.

具有更多参数的类似功能将是(_, __, ___) => null.

请注意,这_不是langauge级别定义的特殊语法.它只是一个可以在函数体内使用的变量名.例如:(_) => _.