Move 2024は、Mysten Labsが管理するMove言語の新しいエディションです。このガイドは、2024エディションと以前のバージョンのMove言語の違いを理解するのに役立つことを目的としています。
このガイドでは、新エディションの変更点の概要を説明します。より詳細で網羅的な変更リストについては、Suiドキュメントを参照してください。
新エディションを使用するには、move
ファイルでエディションを指定する必要があります。エディションはmove
ファイルでedition
キーワードを使用して指定します。現在、利用可能なエディションは2024.beta
のみです。
edition = "2024.beta";
Move CLIには、コードを新エディションに更新する移行ツールがあります。移行ツールを使用するには、次のコマンドを実行します:
$ sui move migrate
移行ツールは、let mut
構文、構造体の新しいpublic
修飾子、friend
宣言の代わりにpublic(package)
関数の可視性を使用するようにコードを更新します。
Move 2024では、可変変数を宣言するためのlet mut
構文が導入されました。let mut
構文は、宣言後に変更可能な可変変数を宣言するために使用されます。
可変変数にはlet mut宣言が必要になりました。mutキーワードなしで変数を再代入しようとすると、コンパイラはエラーを発生させます。
// Move 2020
let x: u64 = 10;
x = 20;
// Move 2024
let mut x: u64 = 10;
x = 20;
さらに、mut
キーワードはタプルの分解や関数の引数で可変変数を宣言するために使用されます。
// 値で受け取り、変更する
fun takes_by_value_and_mutates(mut v: Value): Value {
v.field = 10;
v
}
// `mut`は変数名の前に置く必要があります
fun destruct() {
let (x, y) = point::get_point();
let (mut x, y) = point::get_point();
let (mut x, mut y) = point::get_point();
}
// 構造体のアンパック
fun unpack() {
let Point { x, mut y } = point::get_point();
let Point { mut x, mut y } = point::get_point();
}
Move 2024では、friend
キーワードは非推奨となりました。代わりに、public(package)
可視性修飾子を使用して、同じパッケージ内の他のモジュールに関数を公開できます。
// Move 2020
friend book::friend_module;
public(friend) fun protected_function() {}
// Move 2024
public(package) fun protected_function_2024() {}
Move 2024では、構造体に可視性修飾子が付きます。現在、利用可能な可視性修飾子はpublic
のみです。