为什么不总是在字符串插值中使用花括号?

why not always use curly braces in string interpolation?

https://dart.dev/guides/language/effective-dart/usage#avoid-using-curly-braces-in-interpolation-when-not-needed 表示在不需要时避免在插值中使用大括号。如果您插入一个简单的标识符,但后面没有紧跟更多字母数字文本,则应省略 {}。

除了不需要插值外,还有什么问题吗?

导游说这个不错:

'Hi, $name!'
    "Wear your wildest $decade's outfit."
    'Wear your wildest ${decade}s outfit.'

导游说这不好:

'Hi, ${name}!'
    "Wear your wildest ${decade}'s outfit."

这不是问题,因为 $decade 只是 ${decade} 的 shorthand。所以这两个字符串最终将编译成相同的代码。 linter 规则是关于品味并使代码在您的代码库中保持一致。

您可以在 Dart 语言规范中关于 "String Interpolation" 的章节中看到这一点:https://dart.dev/guides/language/specifications/DartLangSpec-v2.2.pdf

The form $id is equivalent to the form ${id}.

自定义 linter 规则 运行:https://dart.dev/guides/language/analysis-options