首页 > 解决方案 > 有没有办法将结构的属性指定为函数的参数?

问题描述

这是Area我用于 Snake 程序的结构:

struct Area {
    max_x: usize,
    max_y: usize,

    arr: Vec<Vec<&'static str>>
}

这是使用arrstruct 属性的函数Area

fn refresh(area: &Area) {
    println!("{:?}", area.arr)
}

因为它只需要结构中的一个属性,所以我希望我可以将参数设为那个命名属性,这样我就不必写那么多了。它看起来像这样(这会产生错误):

fn refresh(array: &Area.arr) {
    println!("{:?}", array)
}

有什么解决方法可以做类似的事情吗?

标签: rust

解决方案


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)
}

游乐场链接


推荐阅读