【问题标题】:Is there a short form to concat a string with another one into the same variable in dart?是否有一种简短的形式可以将一个字符串与另一个字符串连接到 dart 中的同一个变量中?
【发布时间】:2020-05-04 18:17:35
【问题描述】:

我想构建一个这样的字符串:

String mainString = "Hello, \n";
mainString = mainString + "World";
print(mainstring);

有没有办法在 dart 中做到这一点而不必重复变量?我想在 perl 中完成的示例:

my $main_string = "Hello, \n";
$main_string .= "World";
print($main_string);

【问题讨论】:

    标签: string dart concat


    【解决方案1】:

    你可以像这样编写更短的代码:

    void main() {
      String mainString = "Hello, \n";
      mainString += "World";
      print(mainString);
    }
    

    如果您要连接大量字符串(例如在循环中),使用StringBuffer 附加字符串然后从StringBuffer 创建String 对象会更有效,例如:

    void main() {
      final sb = StringBuffer("Hello, \n");
      sb.write("World");
      print(sb.toString());
    }
    

    原因是通过使用StringBuffer,我们不需要在每次将字符串连接到它时创建一个新的String 对象。

    【讨论】:

    • += 的文档吗?我在String class 文档中看不到它。
    • 文档中没有提到的原因是你不能在 Dart 中覆盖+=,因为它总是被定义为:a = a + b-=/=*= 也是如此(您可以在规范中找到更多内容)。这里几乎没有关于它:dart.dev/guides/language/language-tour#assignment-operators。对于(非常)更多的技术描述,您可以阅读规范中的 CompoundAssignmentOperator:dart.dev/guides/language/specifications/DartLangSpec-v2.2.pdf
    • 而这个操作不能被覆盖的原因是该语言与其他类似的语言(例如Java和C#)保持一致。如果a += b 并不总是意味着a = a + b,那么开发人员可能会非常困惑。
    猜你喜欢
    • 2011-09-20
    • 2021-10-17
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2012-10-04
    • 2012-07-12
    • 2019-05-11
    相关资源
    最近更新 更多