Skip to content

接收消息

TON 是一个分布式区块链,这意味着合约之间的通信是通过发送和接收消息来完成的。最常见的消息类型是内部消息——从一个合约(或钱包)发送到另一个合约的消息。

接收内部消息

要接收所需类型的消息,你需要声明一个接收函数,例如 receive("increment")。这种表示法意味着声明一个接收函数,当一个值为 "increment" 的文本消息发送到合约时将调用该函数。函数体可以修改合约的状态并向其他合约发送消息。无法直接调用接收函数。如果你需要重用某些逻辑,可以声明一个函数并从接收函数中调用它。

有几种接收函数。所有接收函数按照以下列出的顺序处理:

  • receive() - 当一个空消息发送到合约时调用
  • receive("message") - 当带有特定注释的文本消息发送到合约时调用
  • receive(str: String) - 当任意文本消息发送到合约时调用
  • receive(msg: MyMessage) - 当类型为 MyMessage 的二进制消息发送到合约时调用
  • receive(msg: Slice) - 当未知类型的二进制消息发送到合约时调用
solidity
message MyMessage {
    value: Int;
}

contract MyContract {
    receive() {
        // ...
    }
    receive("message") {
        // ...
    }
    receive(str: String) {
        // ...
    }
    receive(msg: MyMessage) {
        // ...
    }
    receive(msg: Slice) {
        // ...
    }
}