pragma solidity >=0.4.0 <0.6.0;
// library和contract用法有一定的区别,内部使用更加灵活!
library UserLib {
struct _User {
string name;
uint age;
mapping(uint=>string) user;
}
function set_age(uint new_age) internal returns(_User memory) {
_User memory user;
user.age =new_age;
return user;
}
function get_age() public {
}
}
contract User
{
// using for的用法就是把UserLib库的方法挂在到uint属性上,相当于age.set_age()中的age作为第一个参数传入!
// 务必注意:age参数必须合理,否则会报错!
using UserLib for uint; //for后面可以是任何类型,挂载后相当于Python的self
UserLib._User public users;
function user() public returns(uint) {
uint age = 18;
// 正确的用法:等价于set_age(age);
age.set_age();
// 错误用法:get_age()无参数或和第一个参数不匹配,就不能这么调用
age.get_age();
}
}