【区块链安全 | 第十六篇】类型之值类型(三)

在这里插入图片描述

值类型

函数类型

函数类型是函数的类型。函数类型的变量可以通过函数进行赋值,函数类型的参数可以用来传递函数并返回函数。

函数类型有两种类型:内部函数和外部函数。

  • 内部函数只能在当前合约内调用(更具体地说,在当前代码单元内调用,这也包括内部库函数和继承函数),因为它们无法在当前合约的上下文外执行。调用内部函数的方式是跳转到它的入口标签,就像在当前合约内部调用一个函数一样。

  • 外部函数包含一个地址和一个函数签名,可以通过外部函数调用传递和返回。

需要注意的是,当前合约的公共函数可以同时作为内部和外部函数使用。要将 f 作为内部函数使用,只需使用 f,如果要将其作为外部函数使用,则使用 this.f

如果函数类型的变量未初始化,调用该变量会导致 Panic 错误。如果在对其使用 delete 后调用函数,也会出现相同的错误。

声明语法

函数类型的声明语法如下:

function (<参数类型>) {
   
    
    internal|external} [pure|view|payable] [returns (<返回类型>)]

与参数类型不同,返回类型不能为空——如果函数类型不返回任何值,则整个 returns (<返回类型>) 部分必须省略。

默认情况下,函数类型是 internal,因此可以省略 internal 关键字。请注意,这仅适用于函数类型。对于在合约中定义的函数,必须显式指定可见性,它们没有默认值。

转换

当且仅当函数类型 A 和函数类型 B 的参数类型

猜你喜欢

转载自blog.csdn.net/2301_77485708/article/details/146726808
今日推荐