< 返回版块

eweca 发表于 2020-08-03 11:06

最近尝试了vector的last_mut函数,它的例子是这样的:

let x = &mut [0, 1, 2];

if let Some(last) = x.last_mut() {
    *last = 10;
}

我平时一般会写成:

let mut x = [0, 1, 2];

if let Some(last) = x.last_mut() {
    *last = 10;
}

这个看起来得到的结果是一样的。

我非常好奇的是,持有一个可变数数组指针的不可变变量,这么写有什么必要性吗?或者换句话说,在什么场景下,这种写法相比第二种更有优越性?

ps: vec![0,1,2] 与 [0,1,2]有啥区别呢?

评论区

写评论
作者 eweca 2020-08-04 01:07

对哦,是我脑抽了。一直都是直接传&mut x进函数,一时没反应过来。

--
👇
Neutron3529: 持有一个可变数数组指针的不可变变量

这个操作多用于函数,如果你传进去一个mut x,函数算完x就没了

但如果你传&mut x,函数执行完x仍会保留

后者就是可变数数组指针的不可变变量的用法

Neutron3529 2020-08-03 11:52

持有一个可变数数组指针的不可变变量

这个操作多用于函数,如果你传进去一个mut x,函数算完x就没了

但如果你传&mut x,函数执行完x仍会保留

后者就是可变数数组指针的不可变变量的用法

Neutron3529 2020-08-03 11:50
fn main() {
    let x=&mut vec![0];
    dbg!(x);
    //x=vec![3];
    dbg!(x);
    let mut x=vec![0];
    dbg!(x);
    x=vec![3];
    dbg!(x);
}

试试去掉注释

1 共 3 条评论, 1 页