rust - 如何使用 println!() 打印命名参数的子项?
问题描述
我了解了在打印时使用命名参数,如下所示:
fn main() {
println!("{nombre} le gusta el {actividad}",
nombre= {"Clemente";"Roberto"}, actividad= "futbol");
}
我不知道如何输出“Roberto”而不是“Clemente”。有什么方法可以访问子项吗?说:
{nombre[1]}
解决方案
{"Clemente";"Roberto"}
是块表达式而不是任何对象或值。这意味着打开和关闭花括号之间的所有内容都被评估为独立语句。它与
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"
的内容,这就是打印的内容。该块中的所有其他内容都将丢失,除非来自外部范围的值发生了变异。
如果您打算将两个名称存储在一个集合中,并使用索引打印一个或另一个,则需要定义一个集合和索引:["Clemente", "Roberto"][0]
. 您不能在格式化字符串(例如println!({nombre[0]} ...
)中索引命名参数,因为它实际上只是一个被关联值替换的名称。
fn main() {
println!("{nombre} le gusta el {actividad}",
nombre=["Clemente", "Roberto"][0], actividad="futbol");
}
更好的是,在 the 之前定义集合,println!
以便以后更容易阅读和维护!这不仅需要一个建议,而且通常被认为是最佳实践。
fn main() {
let nombres = ["Clemente", "Roberto"]];
println!("{nombre} le gusta el {actividad}",
nombre=nombres[0], actividad="futbol");
}
推荐阅读
- python - 使用许多多项式的梯度下降不收敛
- laravel - laravel 5.7“找不到类'Maatwebsite\Excel\ExcelServiceProvider'”
- android - 以编程方式克隆 android 应用程序
- javascript - Compare 2 nested arrays to return duplicate arrays
- c# - SetWinEventHook 回调中的 AccessibleObjectFromEvent 调用导致死锁
- python - 运行无限循环并从“外部”(例如 shell 或其他脚本)获取命令
- excel - Excel 等待很长时间才能开始保存文档
- dart - 地图内置列表
到内置列表 - android - 反应原生并弹出 Expo android 应用程序:Firebase 原生模块出错
- javascript - 删除特定标签后的下一个元素