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?

Events

Last updated at Posted at 2024-10-23

イベントは、プログラムの実行中に発行できる特別な値です。

イベントの種類は、eventキーワードで宣言できます。

event FooEvent(x: Int, y: Int)

イベント宣言の構文は、関数(function)宣言の構文と類似しています。イベントには名前付きパラメータが含まれ、それぞれにオプションの引数ラベルがあります。

イベントパラメータは、有効なイベントパラメータ型のみを持つことができます。有効な型は、boolean、string、integer、これらの型の配列およびディクショナリ、およびすべてのフィールドが有効なイベントパラメータ型である構造体です。リソース型は許可されていません。リソースが引数として使用されると移動されてしまうからです。

イベントは、スマートコントラクト本体の中でしか宣言できません。イベントはグローバルに、またはリソース型や構造体の中で宣言することはできません。

// Invalid: An event cannot be declared globally
//
event GlobalEvent(field: Int)

access(all)
contract Events {
    // Event with explicit argument labels
    //
    event BarEvent(labelA fieldA: Int, labelB fieldB: Int)

    // Invalid: A resource type is not allowed to be used
    // because it would be moved and lost
    //
    event ResourceEvent(resourceField: @Vault)
}

Emitting events

プログラムからイベントを発信するには、emit ステートメントを使用します:

access(all)
contract Events {
    event FooEvent(x: Int, y: Int)

    // Event with argument labels
    event BarEvent(labelA fieldA: Int, labelB fieldB: Int)

    fun events() {
        emit FooEvent(x: 1, y: 2)

        // Emit event with explicit argument labels
        // Note that the emitted event will only contain the field names,
        // not the argument labels used at the invocation site.
        emit BarEvent(labelA: 1, labelB: 2)
    }
}

イベントの発信には、以下の制限があります。

  • イベントはemitステートメントの中でのみ呼び出すことができます。つまり、イベントを変数に割り当てたり、関数のパラメータとして使用することはできません。
  • イベントは、宣言された場所(スマートコントラクト)からしか発信できません。

翻訳元->https://cadence-lang.org/docs/language/events

Flow BlockchainのCadence version1.0ドキュメント (Events)

Previous << Transactions

Next >> Core Events

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?