以下是我在Rust文档中看到的两个函数签名:
fn modify_foo(mut foo: Box<i32>) { *foo += 1; *foo }
fn modify_foo(foo: &mut i32) { *foo += 1; *foo }
为什么<code>mut</code>的位置不同?
似乎第一个函数也可以声明为
fn modify_foo(foo: mut Box<i32>) { /* ... */ }
下面的自然语言翻译似乎为我澄清了问题。。。
let x = value;
x {binds immutably} to {immutable value}
let mut x = value;
x {binds mutably} to {possibly mutable value}
let x = &value;
x {binds immutably} to {a reference to} {immutable value}
let x = &mut value;
x {binds immutably} to {a reference to} {mutable value}
let mut x = &value;
x {binds mutably} to {a reference to} {immutable value}
let mut x = &mut value;
x {binds mutably} to {a reference to} {mutable value}
在哪里
{可变绑定}
表示可以重新分配绑定{可变值}
表示值的内容可以更改mut foo:T
表示您有一个名为foo
的变量,它是T
。您可以更改变量引用的内容:
let mut val1 = 2;
val1 = 3; // OK
let val2 = 2;
val2 = 3; // error: re-assignment of immutable variable
这还允许您修改自己拥有的结构的字段:
struct Monster { health: u8 }
let mut orc = Monster { health: 93 };
orc.health -= 54;
let goblin = Monster { health: 28 };
goblin.health += 10; // error: cannot assign to immutable field
foo:
let val1 = &mut 2;
*val1 = 3; // OK
let val2 = &2;
*val2 = 3; // error: cannot assign to immutable borrowed content
请注意,
如果您来自C/C,基本上这样想可能也会有所帮助:
// Rust C/C++
a: &T == const T* const a; // can't mutate either
mut a: &T == const T* a; // can't mutate what is pointed to
a: &mut T == T* const a; // can't mutate pointer
mut a: &mut T == T* a; // can mutate both
你会注意到这些是彼此相反的。C/C采用“黑名单”方法,如果你希望某个东西是不可变的,你必须明确说明,而Rust采用“白名单”方法,如果你希望某个东西是可变的,你必须明确说明。
问题内容: 直接使用和直接使用父类名称之间有区别吗?例如: 是否有内部之间的差异和? 问题答案: 在 这种情况下 不是。但是 通常 ,尤其是当您使用 多重继承时 ,按照文档中指定 的 方法 委托给 方法解析顺序(MRO)中 的下一个对象 : 返回将方法调用委托给类型的父级或同级类的 代理对象 。这对于访问已在类中重写的继承方法很有用。搜索顺序与所使用的顺序相同,只是类型本身被跳过。 类型的 属性列
谢谢你抽出时间。 问候,
在Chrome开发工具窗口中,我输入: 但是,变成了字符串: 这显然不适用于其他变量名! 而被定义为页面加载时的空字符串(据我所知,不能变成字符串以外的任何东西)。 那么,怎么了?
我遵循了www.patrickvideos.com的java SE教程,在关于“类”的章节中遇到了一个问题 他明确地说,。然而,如果我没有弄错的话,变量本身不能是对象,而只能包含对对象或类实例的引用。那么,
问题内容: 请帮助我理解常量变量和Java变量之间的区别。我对此有些困惑。 问题答案: 常量 是概念,是变量的属性。 是用于声明常量变量的java关键字。 正如其他人所指出的那样,从语义/语言的观点来看, 常量变量 的表达是矛盾的,因此,我们可以争论其正确性。 引用规范,无论如何,我们可以阅读 原始类型的最终变量,并使用编译时常数表达式(第15.28节)进行了初始化,称为 常量变量 。 因此,我想
问题内容: 从一些初始教程中,我看到属性属于类,并且本质上是C ++世界中使用的“全局变量”(在几年前进行了编码)。我也将变量视为更多的“本地”实体,仅在方法中使用/存储信息。 然后我遇到了这个Quora线程:https : //www.quora.com/Apple-Swift-programming-language/What-is-the-difference- between-a-prop