[解決済み] Rustタイプにおけるアンパサンドの意味は?
2022-02-11 01:22:27
質問
Rustのドキュメントでこのコードを見たことがあります。
fn eat(&self) {
println!("{} is done eating.", self.name);
}
は何をするのでしょうか?
&
で
&self
というのは?
どのように解決するのですか?
を渡すということです。 参照 を移動させるのではなく、オブジェクトを移動させます。これを区別することが重要です。なぜなら、もしあなたの関数が次のようなものだったら。
fn eat(self) {
println!("{} is done eating.", self.name);
}
を呼び出し、それを では の後に変数を使用すると、エラーが発生します。
object = Foo::new();
object.eat();
object.something(); // error, because you moved object in eat
を指定しない場合は
&
の場合、Rust は値を関数に移動させ、元のバインディングはもはやオーナーシップを持ちません。
プレイグラウンドバージョン
):
struct Foo {
x : u32
}
impl Foo {
fn eat(self) {
println!("eating");
}
fn something(&self) {
println!("else");
}
}
fn main() {
println!("Hello, world!");
let g = Foo { x: 5 };
g.eat();
g.something(); // if this comes before eat, no errors because we arent moving
}
今すぐ切り替え
something
を呼び出します。
前に
eat
. なぜなら
something
を取るだけです。
参照
,
g
はまだ所有権を持っているので、続行できます。
eat
一方
g
を使用することができなくなります。
g
.
関連
-
[解決済み】LaTeXで変数を定義する方法はありますか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] "お知らせ 未定義変数"、"Notice: Notice: 未定義のインデックス", "Notice:未定義のインデックス", "Notice."。PHPを使用した「未定義のオフセット
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] 関数呼び出しにおけるstarとdoublestarの演算子の意味は?
-
[解決済み] Rubyのmap(&:name)ってどういう意味?
-
[解決済み] コンストラクタのコロンメンバー(" : ")の変な構文は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】LaTeXで変数を定義する方法はありますか?
-
[解決済み] Makefileの変数の初期化とエクスポート
-
[解決済み] Rustタイプにおけるアンパサンドの意味は?
-
[解決済み] JenkinsでGroovyの変数を表示するには?
-
[解決済み] レジストリキーの値を取得し、powershellを使用して値をONLYする方法
-
[解決済み】Dockerfileで変数を定義する方法は?
-
[解決済み] 変数 "i "と "j "はなぜカウンタに使われるのですか?
-
[解決済み] Makefile で複数行の文字列変数を作成することは可能ですか?
-
[解決済み] Makefile の括弧 $() と中括弧 ${} の違いは何ですか?
-
[解決済み] バッチファイル内の変数から二重引用符を削除するとCMD環境に問題が発生する