关键字 using ....for ...
2018-05-22 17:46
357 查看
一、using 用于在合约中给某个类型增加 library的方法 。
例子如下:pragma solidity ^0.4.21; //https://medium.com/@gus_tavo_guim/soliditys-using-keyword-c05c18aaa088 library SomeLibrary { function add(uint self, uint b) public pure returns (uint) { return self+b; } } contract SomeContract { using SomeLibrary for uint; function add3(uint number) public pure returns (uint) { return number.add(3); //调用SomeLibrary的add方法,并且第一个参数就是number } }
上面例子中using SomeLibrary for uint; 表示在unit类型中引入SomeLibrary的方法。并且当unit类型的值调用SomeLibrary的方法时,第一个参数就行unit本身。例如:
number.add(3); 这里就是调用SomeLibrary的add方法,并且第一个参数就是number。
输入13后,调用结果如下:
不适用using的时候,上面代码写法如下:
pragma solidity ^0.4.15; library SomeLibrary { function add(uint self, uint b) returns (uint) { return self+b; } } contract SomeContract { function add3(uint number) returns (uint) { return SomeLibrary.add(number, 3); } }
二、using 后面跟星号(*)。
合约中的所有 类型都可以使用对应SomeLibrary 的方法。例子如下:
pragma solidity ^0.4.15; library SomeOtherLibrary { function add(uint self, uint b) returns (uint) { return self+b; } function checkCondition(bool value) returns (bool) { return value; } } contract SomeContract { using SomeOtherLibrary for *; function add3(uint number) returns (uint) { return number.add(3); } function checkForTruthy(bool checker) returns (bool) { return checker.checkCondition(); } }
上面的例子中,uint类型、bool 类型的实例都可以调用SomeOtherLibrary 的方法,并且把自己作为第一个参数传递进方法中。
实际上整个合约中的任何类型都含有SomeOtherLibrary 的方法。
本文转自:https://medium.com/@gus_tavo_guim/soliditys-using-keyword-c05c18aaa088
相关文章推荐
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- Windows Dev Intro - Using a Capture Device for Media Foundation
- mysql启动问题access denied for user 'root'@'localhost'(using password:YES)
- MySQL远程连接提示Accesss denied for user 'root'@'此处为你自己的ip'(using password:YES)
- Three Basic Sort for using C#
- using 关键字有两个用途
- CSharp关键字----using
- 解决 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 问题
- 智力题总结——求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- 总结linux下使用mysql数据库出现 “Access denied for user 'root'@'localhost' (using password: YES)”
- 83.You are using Enterprise Manager to schedule backups for your database. Which type of script woul
- 93.You are using flat files as the data source for one of your data warehousing applications. To opt
- USING SAS TO FIND THE BEST K FOR K-NEAREST-NEIGHBOR CLASSIFICATION
- 解决Access denied for user 'root'@'localhost' (using password: NO)
- Linux 连接mysql数据库ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password:
- 7.3.2 Using Backups for Recovery 使用备份用于恢复
- Claim-based-security for ASP.NET Web APIs using DotNetOpenAuth
- mysql 出现 1045 access denied for user 'root'@'localhost' using password yes 解决办法