函数的定义
function func_name(paramlist...) modifiers returns (returnlist...)
- function是函数声明的关键字;
- func_name自定义函数名称,与我们习惯的函数命名规范没有区别;
- paramlist参数列表,可以0或多个参数,格式是:参数类型 参数名称;
- modifiers函数的修饰符,非常关键;
- returns返回值关键字,看到s应该能想到可以返回多个值;
- returnlist返回值类型列表;
函数的可见性
函数的可见性有四种:
- Private(私有):函数只能在所定义的智能合约内部调用,也就是只有该合约可以调用。
- Internal(内部):可以在所定义智能合约内部调用该函数,也可以从继承合约中调用该函数。
- External(外部):内部不能访问只能从智能合约外部调用。
- Public(公开):可以从任何地方调用 (最宽松)。对于公共状态变量,会生成自动getter函数。
函数状态可变性
- view:用
view
声明的函数只能读取状态,而不能修改状态。 - pure:用
pure
声明的函数既不能读取也不能修改状态。 - payable:用
payable
声明的函数可以接受发送给合约的以太币,如果未指定,该函数将自动拒绝所有发送给它的以太币。 - constant:合约不修改状态变量,和view一样(函数中基本不使用了)
函数修饰符modifiy
支持自定义修饰符号modifier