Message `mode`
如前所述,信息是通过结构体 SendParameters
的 mode
参数发送的。这是一个Int
值,由基本模式和可选标志(也是Int
值)组合而成。
您可以使用原始的 Int
值,并手动为 mode
提供这些值,但为了方便起见,您可以使用一组常量来轻松构建复合 mode
。有关基本模式和可选标记的更多信息,请参阅下表。
基本模式
模式值 | 恒定名称 | 说明 |
---|---|---|
- | 普通信息(默认)。 | |
SendRemainingValue | 除了新报文中最初显示的值外,还携带入站报文的所有剩余值。 | |
SendRemainingBalance | 携带当前智能合约的所有余额,而不是信息中最初显示的值。 |
可选标记
标志值 | 恒定名称 | 说明 |
---|---|---|
SendPayGasSeparately | 将转发费用与信息价值分开支付。 | |
SendIgnoreErrors | 忽略行动阶段处理该信息时出现的任何错误。 | |
SendBounceIfActionFail | 如果在操作阶段出现任何错误,则退回交易。 Has no effect if flag , SendIgnoreErrors is used. | |
SendDestroyIfZero | Current account must be destroyed if its resulting balance is zero (often used with mode , SendRemainingBalance). |
将模式与标志相结合
要为 SendParameters
的 mode
字段创建 Int
值,只需通过 bitwise OR 运算将基本模式与可选标记结合起来。
例如,如果您想分别发送普通信息和支付转账费用,请使用模式 (默认)和标志 ,以获得 mode
,这等同于使用 SendPayGasSeparately
常量。
或者,如果要发送全部合约余额并立即销毁,使用模式 和标志 ,得到 mode
,相当于 SendRemainingBalance | SendDestroyIfZero
常量。
下面是后一个示例的代码: