定数および変数は、値と型を識別子(identifer)に結びつける宣言です。定数は値で初期化され、その後再割り当てすることはできません。変数は値で初期化され、後で再割り当てすることができます。宣言はグローバルスコープを含む任意のスコープで作成できます。
定数とは、識別子の関連性が一定であることを意味し、値自体が一定であることを意味するものではありません。値は変更可能であれば、変更することができます。
定数は、letキーワードを使用して宣言します。変数は、varキーワードを使用して宣言します。キーワードの後に、識別子、オプションの型アノテーション、等号=、初期値を続けます。
// Declare a constant named `a`.
//
let a = 1
// Invalid: re-assigning to a constant.
//
a = 2
// Declare a variable named `b`.
//
var b = 3
// Assign a new value to the variable named `b`.
//
b = 4
変数と定数は初期化が必須です。
// Invalid: the constant has no initial value.
//
let a
各スコープにおける変数または定数の宣言名は、一意でなければなりません。現在のスコープで既に宣言されている名前で別の変数または定数を宣言することは、種類や型に関係なく無効です。
// Declare a constant named `a`.
//
let a = 1
// Invalid: cannot re-declare a constant with name `a`,
// as it is already used in this scope.
//
let a = 2
// Declare a variable named `b`.
//
var b = 3
// Invalid: cannot re-declare a variable with name `b`,
// as it is already used in this scope.
//
var b = 4
// Invalid: cannot declare a variable with the name `a`,
// as it is already used in this scope,
// and it is declared as a constant.
//
var a = 5
ただし、サブスコープ内で変数の再宣言が可能です。
// Declare a constant named `a`.
//
let a = 1
if true {
// Declare a constant with the same name `a`.
// This is valid because it is in a sub-scope.
// This variable is not visible to the outer scope.
let a = 2
}
// `a` is `1`
変数を変数自身の初期値として使用することはできません。
// Invalid: Use of variable in its own initial value.
let a = a
翻訳元->https://cadence-lang.org/docs/language/constants-and-variables