打字猴:1.703876756e+09
1703876756
1703876757 区块链项目开发指南 [:1703875312]
1703876758 区块链项目开发指南 3.9.3 回退函数
1703876759
1703876760 一个合约可以有唯一的未命名函数,称为回退函数(fallback function)。该函数不能有实参,不能返回任何值。如果其他函数都不能匹配给定的函数标识符,就在合约调用上执行回退函数。
1703876761
1703876762 当合约不用任何函数调用就接收以太币(即交易发送以太币给合约却不调用任何方法)时,也执行该函数。在此情况下,用于函数调用的gas通常很少(准确地说是2300 gas),所以使回退函数尽可能便宜很重要。
1703876763
1703876764 接收以太币但是却不定义回退函数的合约会抛出异常,把以太币发送回去。所以如果你想让你的合约接收以太币,就必须要实现回退函数。
1703876765
1703876766 下面给出了回退函数的一个示例:
1703876767
1703876768
1703876769
1703876770
1703876771
1703876772
1703876773
1703876774 区块链项目开发指南 [:1703875313]
1703876775 区块链项目开发指南 3.9.4 继承
1703876776
1703876777 Solidity通过代码备份(包括多态)支持多重继承(multiple inheritance)。即使一个合约继承自其他多个合约,在区块链上也只创建一个合约,来自父合约(parent contract)的代码总是被复制到最终合约里。示例如下:
1703876778
1703876779
1703876780
1703876781
1703876782
1703876783
1703876784
1703876785 1.super关键字
1703876786
1703876787 super关键字用于引用最终继承链中的下一个合约,示例如下:
1703876788
1703876789
1703876790
1703876791
1703876792 其中,引用sample6合约的最终继承链是sample6、sample5、sample4、sample2、sample3和sample1。继承链始于衍生最充分的合约,终于衍生最不充分的合约。
1703876793
1703876794 2.抽象合约
1703876795
1703876796 仅包含函数原型而不包含函数实现的合约称为抽象合约(abstract contract)。这些合约不能被编译(即使包含实现函数和非实现函数)。如果一个合约继承自抽象合约且不重写并实现所有非实现函数,那么它自己也是抽象的。
1703876797
1703876798 抽象合约仅在创建编译器已知的接口时提供。这在引用已部署的合约和调用其函数时是很有用的。示例如下:
1703876799
1703876800
1703876801
1703876802
1703876803
1703876804
1703876805
[ 上一页 ]  [ :1.703876756e+09 ]  [ 下一页 ]