gpt4 book ai didi

dart - 方法级联如何在 dart 中准确工作?

转载 作者:行者123 更新时间:2023-12-03 21:19:06 26 4
gpt4 key购买 nike

正如 Dart 文章中所述:

The ".." syntax invokes a method (or setter or getter) but discards the result, and returns the original receiver instead.



所以我认为这会起作用:

myList..clear().addAll(otherList);

这给了我无法调用的错误 .addAllnull .

显然 .先于 ..以便 .addAll已在 上调用结果 .clear() .

我现在想我有两种可能性来写这个:
  • myList..clear()..addAll(otherList);
  • (myList..clear()).addAll(otherList); (如果我想得到 .addAll() 的结果。

  • 这样对吗?如果是,为什么决定给予 .优先级?这似乎非常违反直觉。是否要避免这样的语法: myList(..clear().useResultOfClear()).addAll(otherList); ?

    最佳答案

    您可以阅读 Gilad Bracha 的文章:Method Cascades in Dart .在它的末尾,您将看到许多示例。

    另见 this answer of Lasse Nielsen about operator precedence :

    It helps to think of ".." as not really an operator, but more like a scoping construct (like parentheses). It creates a new scope from the ".." to either the next "..", or the first other scope delimiter (";", ")", "}" or similar).



    基本上, a..b().c()(t){t.b().c(); return t;}(a) 相同

    关于dart - 方法级联如何在 dart 中准确工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17025769/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com