Flutter / Dart中单引号和双引号之间的区别

Sur*_*gch 9 string dart flutter

我知道单引号和双引号在Dart中至少具有某种程度的对等性。例如,

var myString = "Hello world";      // double quotes
Run Code Online (Sandbox Code Playgroud)

var myString = 'Hello world';      // single quotes
Run Code Online (Sandbox Code Playgroud)

就我所知,在程序上没有区别。

我一直看到它们在各种示例和某些文档中似乎可以互换使用。我想知道我是否缺少细微的差别,或者是否有推荐的风格可以遵循,尤其是在Flutter中。

阅读Flutter和Dart样式指南后,这是一个问答环节。

Sur*_*gch 18

单引号和双引号都可以在Dart中使用

final myString = 'hello';
Run Code Online (Sandbox Code Playgroud)

是相同的

final myString = "hello";
Run Code Online (Sandbox Code Playgroud)

分隔符需要转义

使用\反斜杠可将单引号引起来的单引号转义。

final myString = 'Bob\'s dog';            // Bob's dog
Run Code Online (Sandbox Code Playgroud)

在双引号字符串中转义双引号也是一样。

final myString = "a \"quoted\" word";     // a "quoted" word
Run Code Online (Sandbox Code Playgroud)

但是,如果分隔符不同,则无需转义任何内容。

final myString = "Bob's dog";             // Bob's dog
final myString = 'a "quoted" word';       // a "quoted" word
Run Code Online (Sandbox Code Playgroud)

同样也不必担心传递给插值字符串的值。

final value = '"quoted"';                 // "quoted"
final myString = "a $value word";         // a "quoted" word
Run Code Online (Sandbox Code Playgroud)

在Flutter中首选单引号

颤振风格指南推荐使用的一切单引号

final myString = 'hello';
Run Code Online (Sandbox Code Playgroud)

嵌套字符串除外

print('Hello ${name.split(" ")[0]}');
Run Code Online (Sandbox Code Playgroud)

或包含单引号的字符串(可选)

final myString = "Bob's dog";
final myString = 'Bob\'s dog';  // ok
Run Code Online (Sandbox Code Playgroud)

飞镖风格指南似乎在这个问题上保持沉默。

  • Dart样式指南确实对此问题保持沉默。人们已经提出并讨论了推荐的样式很多次,但是没有共识说一种样式普遍优于另一种样式。单引号的参数包括它们在眼睛上较亮,并且在* US *键盘上更容易键入。包含双引号的参数更易于阅读,因为它们更加引人注目,而且包含撇号的字符串比包含引号的字符串更多。 (4认同)
  • 我希望他们只选择其中之一。 (3认同)
  • @TomTom101,您可以通过在字符串前加上“r”前缀来使用原始字符串。例如,“r”这需要 100 美元”。这适用于单引号和双引号。 (2认同)