0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Glossary(記号)

Last updated at Posted at 2024-10-20

& (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

Flow BlockchainのCadence version1.0ドキュメント (Glossary(記号))

Previous << Type Hierarchy

Next >> Design Patterns

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?