Appearance
接收消息
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) {
// ...
}
}