Eon*_*nil 22 string-interpolation rust
在Ruby中,我可以做到这一点.
aaa = "AAA"
bbb = "BBB #{aaa}"
puts(bbb)
> "BBB AAA"
Run Code Online (Sandbox Code Playgroud)
这种语法的重点是消除重复,并使其感觉像一个shell脚本 - 非常适合繁重的字符串操作.
Rust支持这个吗?或者有计划支持这个?或者有一些可以模仿的功能?
at5*_*321 47
从 Rust 1.58 开始,您可以利用格式字符串中捕获的标识符。这可以让你做这样的事情:
let msg = "here";
let s = format!("Abc {msg}");
println!("Hi t{msg}"); // prints "Hi there"
println!("{s}"); // prints "Abc here"
Run Code Online (Sandbox Code Playgroud)
该功能可以看作是字符串插值的子集。不支持类似的表达式format!("Abc {a+b}")
,并且尚不清楚是否会添加这样的功能。还有关于为点路径添加表达式子集的讨论,如 中所示format!("Abc {foo.bar}")
。
另请注意,Rust 2021 版本为该语言的未来添加内容留出了空间,例如f"hello {name}"
,与大多数其他现代语言相比,这将允许更简洁的字符串插值。
Die*_*Epp 36
Rust有字符串格式.
fn main() {
let a = "AAA";
let b = format!("BBB {}", a);
println(b);
}
// output: BBB AAA
Run Code Online (Sandbox Code Playgroud)
在Rust版本中,没有额外的重复,但您必须显式调用format!()
,并且插入的值与字符串分开.这与Python和C#开发人员习惯使用的方式基本相同,理由是这种技术可以更轻松地将代码本地化为其他语言.
Rust邮件列表有一个存档讨论([rust-dev]建议),其中讨论了不同类型的字符串插值.
Eon*_*nil 31
RFC 2795已被接受,但尚未实施。建议的语法:
let (person, species, name) = ("Charlie Brown", "dog", "Snoopy");
// implicit named argument `person`
print!("Hello {person}");
// implicit named arguments `species` and `name`
format!("The {species}'s name is {name}.");
Run Code Online (Sandbox Code Playgroud)
我希望很快就能看到它。
归档时间: |
|
查看次数: |
6248 次 |
最近记录: |