Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion 07-type/07-04-operator-and-format.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ format!("{:?}", "Hello");

再接下来`0`是一种特殊的填充语法,他表示用0补齐数字的空位,要注意的是,当0作用于负数的时候,比如上面例子中wayslog的体重是-81,那么你最终将得到`-0081`;当然了,什么都不写表示用空格填充啦;在这一位上,还会出现`+`、`#`的语法,使用比较诡异,一般情况下用不上。

最后是一个组合式子`width$`,这里呢,大家很快就能人出来是表示后面key-value值对中的`width=4`。你们没猜错,这个值表示格式化完成后字符串的长度。它可以是一个精确的长度数值,也可以是一个以`$`为结尾的字符串,$前面的部分可以写一个key或者一个postion,即 `width$` 改成 `2$`也是可以的,不过数值就是10而不是4咯!
最后是一个组合式子`width$`,这里呢,大家很快就能认出来是表示后面key-value值对中的`width=4`。你们没猜错,这个值表示格式化完成后字符串的长度。它可以是一个精确的长度数值,也可以是一个以`$`为结尾的字符串,$前面的部分可以写一个key或者一个postion,即 `width$` 改成 `2$`也是可以的,不过数值就是10而不是4咯!

最后,你需要额外记住的是,在width和type之间会有一个叫精度的区域(可以省略不写如例子),他们的表示通常是以`.`开始的,比如`.4`表示小数点后四位精度。最让人遭心的是,你仍然可以在这个位置引用参数,只需要和上面width一样,用`.N$`来表示一个position的参数,但是就是不能引用key-value类型的。这一位有一个特殊用法,那就是`.*`,它不表示一个值,而是表示两个值!第一个值表示精确的位数,第二个值表示这个值本身。这是一种很尴尬的用法,而且极度容易匹配到其他参数。因此,我建议在各位能力或者时间不欠缺的时候尽量把格式化表达式用标准的形式写的清楚明白。尤其在面对一个复杂的格式化字符串的时候。

Expand Down