作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
if
如果在 fmt
内使用,则表达式不起作用字符串。
为什么,以及如何使它工作?
import strformat
let v = if true: 1 else: 2 # <= Works
echo fmt"{v}"
echo fmt"{if true: 1 else: 2}" # <= Error
最佳答案
为什么?
因为 fmt
用途 :
将表达式的值与格式说明符分开(参见 docs 和 implementation )该行echo fmt"{if true: 1 else: 2}"
被宏扩展为
var temp = newStringOfCap(educatedCapGuess)
temp.formatValue if true, " 1 else: 2"
temp
这显然不能编译。
echo fmt"{(if true: 1 else: 2)}"
新的增强功能还允许在表达式中使用大括号(转义它们)。
fmt
的限制。我不认为目前有一种方法可以使用
:
的表达式在
fmt
它不充当特定格式。
formatSpecifierSeparator
关键字参数以更改默认值
:
并能够执行以下操作:
echo "{if true: 1 else: 2}".fmt('|')
另一种方法是更改
strformatImpl
的实现并确保
:
之前的部分在解释之前实际编译
:
作为 formatSpecifier 分隔符。
关于nim-lang - 如何在 Nim 中的格式化字符串中使用表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63602254/
我是一名优秀的程序员,十分优秀!