我了解了有关在打印时使用命名参数的信息,如下所示:
fn main() {
println!("{nombre} le gusta el {actividad}",
nombre= {"Clemente";"Roberto"}, actividad= "futbol");
}
我不知道如何输出“Roberto”而不是“Clemente”。有什么办法可以访问子项?说:{nombre[1]}
最佳答案
{"Clemente";"Roberto"}
是block expression,不是任何对象或值。这意味着打开和关闭的小卷发之间的所有内容都将作为独立的statement进行评估。与...相同
fn main() {
let s = {
"Clemente";
"Roberto" // the return value
}; // s is set to "Roberto"
println!("{nombre} le gusta el {actividad}",
nombre=s, actividad= "futbol");
}
因此,当println!
评估格式参数时,它仅接收返回的"Roberto"
,即所打印的内容。除非外部作用域的值发生了突变,否则该块中的所有其他内容都会丢失。如果您打算将这两个名称存储在collection中,并使用索引打印一个或另一个,则需要定义一个集合和索引:
["Clemente", "Roberto"][0]
。您不能在格式设置字符串(例如println!({nombre[0]} ...
)内建立命名参数的索引,因为它实际上只是一个被关联值替换的名称。fn main() {
println!("{nombre} le gusta el {actividad}",
nombre=["Clemente", "Roberto"][0], actividad="futbol");
}
更好的是,在println!
之前定义集合,以便以后阅读和维护!这不只是建议,通常被认为是最佳实践。fn main() {
let nombres = ["Clemente", "Roberto"]];
println!("{nombre} le gusta el {actividad}",
nombre=nombres[0], actividad="futbol");
}
关于rust - 如何使用println!()打印已命名参数的子项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63607855/