- Go back to TOP(インデックスページへ)
- & (ampersand) (※記号は全てリンク切れなります..)
- @ (at)
- : (colon)
- = (equals)
- ! (exclamation mark)
- / (forward slash)
- <- (Move operator)
- <-! (Force-assignment move operator)
- <-> (Swap operator)
- + (plus), - (minus), * (asterisk), % (percentage sign)
- ? (question mark)
- ?? (Nil-Coalescing Operator)
- _ (underscore)
& (ampersand)
&(アンパサンド)記号にはいくつかの用途があります。
Reference
式が&(アンパサンド)記号で始まる場合、参照先(reference)が作成されます。
let a: String = "hello"
let refOfA: &String = &a as &String
&記号の前にauthが付いている場合、参照(reference)も許可される場合があります(原文: may also be authorized)(そうでない場合は参照(reference)は許可されていません)。
許可された参照には、auth修飾子と、参照(reference)が許可されている一連の権限が付いています。すなわち、完全な構文はauth(E, F) &Tであり、許可されていない参照(reference)には修飾子が付いていません。
let a: String = "hello"
let refOfA: auth(X) &String = &a as auth(X) &String
Logical Operator
また、2つ続けて記述することで、論理演算子(AND)としても使用できます(例:&&)。let a = true
let b = false
let c = a && b // false
@ (at)
タイプ名の前に@(アットマーク)記号を付けると、そのタイプがリソースであるかどうかを注釈として示すことができます。
@記号はタイプ名の先頭に付け、タイプ名の中には含めないようにしてください。例えば、NFTの配列は@[NFT]であり、[@NFT]ではありません。これにより、タイプ全体がリソースとして機能することが強調されます。
// Declare a resource named `SomeResource`
access(all)
resource SomeResource {
access(all)
var value: Int
init(value: Int) {
self.value = value
}
}
// we use the '@' symbol to reference a resource type
let a: @SomeResource <- create SomeResource(value: 0)
// also in functions declarations
access(all)
fun use(resource: @SomeResource) {
destroy resource
}
: (colon)
:(コロン)記号にはいくつかの用途があります。
Type Declaration
:(コロン)が変数/定数/関数の宣言の後に続く場合、その型の宣言に使用されます。
let a: Bool = true // declares variable `a` with type `Bool`
// or
fun addOne(x: Int): Int { // return type of Int
return x + 1
}
Ternary Conditional Operator
:(コロン)は、3項演算で「そうでなければ」の部分を表す場合にも使用されます。例えば、次のようになります。
let a = 1 > 2 ? 3 : 4
// should be read as:
// "is 1 greater than 2?"
// "if YES, then set a = 3,
// "otherwise, set a = 4.
= (equals)
=(イコール)記号にはいくつかの用途があります。
Variable Declaration
let a = 1 // declares a variable `a` with value `1`
Assignment
a = 1 // assigns the value `1` to variable `a `
! (exclamation mark)
!(感嘆符)記号は、変数の前にある場合と後にある場合で意味が異なります。
論理型変数の直前に置かれる場合、その変数を否定します。
let a: Bool = true
let b: Bool = !a
// b is false
オプショナル変数を即座に成功させる(値を保証させる)場合に、この記号は強制的にアンラップします。強制的にアンラップすると、オプションに値が含まれている場合はその値が返され、オプションに値が含まれていない場合、すなわちオプションの値が nil の場合は、パニックが発生して実行が中止されます。
let a: Int? = nil
let b: Int? = 3
let c: Int = a! // panics, because = nil
let d: Int = b! // initialized correctly as 3
/ (forward slash)
/(スラッシュ)記号にはいくつかの用途があります。
Division Operator
2つの数式の間では、スラッシュは割り算演算子として機能します。
let result = 4 / 2
Path separator
Pathでは、スラッシュはドメイン(storageまたはpublic)および識別子を区切ります。
let storagePath = /storage/path
storagePath.toString() // is "/storage/path"
<- (lower than, hyphen) (Move operator)
移動演算子<-は代入演算子=に似ていますが、値がリソース・オブジェクトである場合にのみ使用しなければなりません。リソースの代入を明示的に行うには、移動演算子<-を使用しなければならないのは、以下の場合です。
- リソースが定数または変数の初期値である場合
- リソースが代入で別の変数に移動される場合
- リソースが引数として関数に移動される場合
- リソースが関数から返される場合
resource R {}
let a <- create R() // we instantiate a new resource and move it into a
<-! (lower than, hyphen, exclamation mark) (Force-assignment move operator)
force-assignment ムーブ演算子 <-! は、リソース値をオプショナル変数に移動します。変数がnilの場合、ムーブは成功します。変数がnilでない場合、プログラムは中断します。
access(all)
resource R {}
var a: @R? <- nil
a <-! create R()
<-> (lower than, hyphen, greater than) (Swap operator)
スワップ演算子<->は、その演算子の左右にある変数間で2つのリソースを入れ替えます。
+ (plus), - (minus), * (asterisk), % (percentage sign)
これらはすべて典型的な算術演算子です。
- 足し算:+
- 引き算:-
- 掛け算:*
- 余り:%
? (question mark)
?(クエスチョンマーク)記号にはいくつかの用途があります。
Optional
変数/定数の後に?(クエスチョンマーク)が付いている場合、オプショナルを表します。オプショナルには値がある場合と、全く何もない場合(原文: nothing at all)があります。
// Declare a constant which has an optional integer type
//
let a: Int? = nil
Ternary Conditional Operator
?(クエスチョンマーク)は、3項演算で「then(であれば..)」の部分を表す場合にも使用されます。例えば、以下のような場合です。
let a = 1 > 2 ? 3 : 4
// should be read as:
// "is 1 greater than 2?"
// "if YES, then set a = 3,
// "otherwise, set a = 4.
Nil-Coalescing Operator
?(クエスチョンマーク)は、nil結合演算子??(原文: nil-coalescing operator ??)でも使用されます。
オプショナルに値が含まれている場合はその値を返し、オプショナルに値がない場合、つまりオプションナルの値がnilである場合は代替値を返します。
// Declare a constant which has an optional integer type
//
let a: Int? = nil
// Declare a constant with a non-optional integer type,
// which is initialized to `a` if it is non-nil, or 42 otherwise.
//
let b: Int = a ?? 42
// `b` is 42, as `a` is nil
// Invalid: nil-coalescing operator is applied to a value which has a non-optional type
// (the integer literal is of type `Int`).
//
let c = 1 ?? 2
_ (underscore)
_(アンダースコア)記号にはいくつかの用途があります。
Names
_(アンダースコア)は、変数や型などの名前に使用できます。
let _a = true // used as a variable name
let another_one = false
Number Literals
_(アンダースコア)は、数値のコンポーネントを分割するのにも使用できます。
let b = 100_000_000 // used to split up a number (supports all number types, e.g. 0b10_11_01)
Argument Labels
_(アンダースコア)は、関数内のパラメータに引数ラベルがないことを示す場合もあります。
// The special argument label _ is specified for the parameter,
// so no argument label has to be provided in a function call.
fun double(_ x: Int): Int {
return x * 2
}
let result = double(4)
翻訳元->https://cadence-lang.org/docs/measuring-time