rust - 有没有办法将结构的属性指定为函数的参数?
问题描述
这是Area
我用于 Snake 程序的结构:
struct Area {
max_x: usize,
max_y: usize,
arr: Vec<Vec<&'static str>>
}
这是使用arr
struct 属性的函数Area
:
fn refresh(area: &Area) {
println!("{:?}", area.arr)
}
因为它只需要结构中的一个属性,所以我希望我可以将参数设为那个命名属性,这样我就不必写那么多了。它看起来像这样(这会产生错误):
fn refresh(array: &Area.arr) {
println!("{:?}", array)
}
有什么解决方法可以做类似的事情吗?
解决方案
refresh
是的,您可以像这样更改函数的签名
fn refresh(area_arr: &Vec<Vec<&'static str>>) {
println!("{:?}", area_arr)
}
然后你可以这样称呼它
refresh(&your_area_instance.arr);
这是一个完整的代码示例
struct Area {
max_x: usize,
max_y: usize,
arr: Vec<Vec<&'static str>>
}
fn main() {
let area_instance = Area {
max_x: 20,
max_y: 20,
arr: vec![
vec![&"test1_1", &"test1_2"],
vec![&"test2_1", &"test2_2"],
]
};
refresh(&area_instance.arr);
}
fn refresh(area_arr: &Vec<Vec<&'static str>>) {
println!("{:?}", area_arr)
}
和游乐场链接。
推荐阅读
- python - MongoDB count 总共三个字段
- python - 如何将点数据从 python 导入 postreSQL 数据库?
- python - 无法在 Spyder for mac 上更改 Python 解释器
- javascript - 为什么我不能访问通过 React DOM 呈现的元素的子元素?
- javascript - 目前正在将我的 Firestore 发布数据函数重构为数组存储
- c# - 如何从字符串中获取文件夹(在我的项目中)?(C#)
- c# - 文本框不会更新总数
- vue.js - 在 vue js 中迭代 axios.get 请求中的对象
- javascript - 将数据从 URL 添加到传单地图
- javascript - Javascript - setValue 将 #ERROR 返回到单元格中