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

53

我知道在Dart中,单引号和双引号至少有一定的等价性。例如:

var myString = "Hello world";      // double quotes
和。
var myString = 'Hello world';      // single quotes
据我所知,它们在程序上没有区别。我看到它们在各种示例和一些文档中似乎可以互换使用。我想知道是否有微小的差异我是否遗漏了,或者是否有建议要遵循的风格,特别是在Flutter中。这是Flutter和Dart样式指南阅读后的自问自答。
1个回答

92

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

final myString = 'hello';

与之相同

final myString = "hello";

定界符需要转义

在单引号字符串中,使用\反斜杠来转义单引号。

final myString = 'Bob\'s dog';            // Bob's dog

在双引号字符串中,转义双引号的方法相同。

final myString = "a \"quoted\" word";     // a "quoted" word

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

final myString = "Bob's dog";             // Bob's dog
final myString = 'a "quoted" word';       // a "quoted" word

同时无需担心传递到插值字符串中的值。

final value = '"quoted"';                 // "quoted"
final myString = "a $value word";         // a "quoted" word

在Flutter中更喜欢使用单引号

Flutter风格指南建议在所有情况下都使用单引号。

final myString = 'hello';

除了嵌套字符串外

print('Hello ${name.split(" ")[0]}');

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

final myString = "Bob's dog";
final myString = 'Bob\'s dog';  // ok

Dart风格指南似乎没有涉及此问题。


24
Dart风格指南对这个问题确实没有明确规定。已经提出并讨论了推荐的写法,但并没有达成一种在所有情况下均更好的样式共识。使用单引号的理由包括对眼睛更轻松、在美国键盘上更容易打。使用双引号的理由包括更容易阅读,因为它们更加突出,并且包含撇号的字符串比包含引号的字符串更多。 - lrn
无论如何,您始终必须引用美元符号,例如“这个价格是100美元”。我更喜欢在使用单引号时不进行插值,因此可以编写“这个价格是$100美元”。 - TomTom101
7
@TomTom101,你可以使用原始字符串来实现,只需在字符串前加上 r。例如,r'这个花费$100美元'。这适用于单引号和双引号。 - Suragch
1
我希望他们能够选择其中一个。 - Nerdy Bunz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接