字符串:需要使用双引号""或者单引号''括起来,例如:定义一个字符串变量:string name="jake";string字符串不能通过length方法获得长度。

一.十六进制数据

  以关键字hex打头,后面紧跟用单或双引号包裹的字符串。如hex"001122ff"。通过下面的例子来理解下是什么意思:

pragma solidity ^0.4.4;

contract HexLiteral{
function test() returns (string){
var a = hex"001122FF"; //var b = hex"A";
//Expected primary expression return a;
}
}

  由于一个字节是8位,所以一个hex是由两个[0-9a-z]字符组成的。所以var b = hex"A";不是成双的字符串是会报错的。var类型会在后面的文章进行解释。

二.十六进制的字面量与字符串可以进行同样的类似操作(例如索引)

pragma solidity ^0.4.4;

contract HexLiteralBytes{
function test() returns (bytes4, bytes1, bytes1, bytes1, bytes1){
bytes4 a = hex"001122FF"; return (a, a[0], a[1], a[2], a[3]);
}
}

  上面运行结果可以发现,它可以隐式的转为bytes。

三.函数(function)

  函数有两种类型,内部函数(internal)和外部函数(external),内部函数只能在当前合约的上下文内使用,外部函数允许使用到本合约之外的地方。函数的默认类型是内部函数,如果外部函数被本合约之外的环境调用,会自动转换为bytes24类型,包括20字节的函数所在地址和4字节的函数方法签名。
  例子:

function abc(uint a) returns(uint){
  return a;
}

  abc是函数名字,括号内是参数,如果没有参数则括号内为空,returns是返回值,需要在括号内定义好返回值的类型,如果没有返回值,则必须省略returns关键字。

  通过一个例子来学习更多的变化情况:

pragma solidity ^0.4.4;

contract FuntionTest{
function internalFunc() internal{} function externalFunc() external{} function callFunc(){
//直接使用内部的方式调用
internalFunc(); //不能在内部调用一个外部函数,会报编译错误。
//externalFunc();
//Error: Undeclared identifier. //不能通过`external`的方式调用一个`internal`
//Member "internalFunc" not found or not visible after argument-dependent lookup in contract FuntionTest
//this.internalFunc(); //使用`this`以`external`的方式调用一个外部函数
this.externalFunc();
}
} contract FunctionTest1{
function externalCall(FuntionTest ft){
//调用另一个合约的外部函数
ft.externalFunc(); //不能调用另一个合约的内部函数
//Error: Member "internalFunc" not found or not visible after argument-dependent lookup in contract FuntionTest
//ft.internalFunc();
}
}

  解释:函数internalFunc被定义为内部函数,可以直接调用。函数externalFunc被定义为外部函数,在本合约内直接调用会报错,需要加上关键字this:this.externalFunc( )才可以。同时,在内部函数前加this函数会报错,不能用外部函数的调用方法来调用内部函数。

  调用另一个合约的外部函数格式:ft.externalFunc( ),fx是另一个合约的名字,externalFunc是外部函数的名字。另一个合约的内部函数是不能被调用的,会报错。

文章来源:https://blog.csdn.net/aaa19890808/article/details/79332833

Solidity字符串和函数的更多相关文章

  1. VB常用字符串操作函数

    1. ASC(X),Chr(X):转换字符字符码 [格式]: P=Asc(X) 返回字符串X的第一个字符的字符码 P=Chr(X) 返回字符码等于X的字符 [范例]: (1)P=Chr(65) ‘ 输 ...

  2. php-设置关键词高亮的字符串处理函数

    /** * 设置关键词高亮的字符串处理函数 * @param [string] $str [要高亮的字符串] * @param array $word_arr [关键词] */function set ...

  3. JS字符串格式化函数 string.format

    原生JS写的仿C#的字符串format函数,在此基础上又增加了便于JS使用的字面量对象参数. 参照C#中的规则,调用的时候会检测字符串格式,如果字符串格式不规范,或者传入的参数为null或undefi ...

  4. JS字符串替换函数:Replace(“字符串1″, “字符串2″),

    JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...

  5. Excel怎样从一串字符中的某个指定“字符”前后截取字符及截取字符串常用函数

    怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符. 如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作, 另外,怎么样从右边截取字符,就是和left()函数相反的那 ...

  6. SQL注入的字符串连接函数

    在select数据时,我们往往需要将数据进行连接后进行回显.很多的时候想将多个数据或者多行数据进行输出的时候,需要使用字符串连接函数.在sqli中,常见的字符串连接函数有concat(),group_ ...

  7. C语言字符串处理函数

    函数名: strcpy  功  能: 拷贝一个字符串到另一个  用  法: char *stpcpy(char *destin, char *source);  程序例:  #include < ...

  8. JavaScript中常见的字符串操作函数及用法

    JavaScript中常见的字符串操作函数及用法 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信 ...

  9. 飘逸的python - 增强的格式化字符串format函数

    自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和 ...

随机推荐

  1. bootstrap4相关文档

    本节课我们主要学习一下Bootstrap的两个个组件功能:输入框组件和导航导航条组件. 一.输入框组件 文本输入框就是可以在<input>元素前后加上文字或按钮,可以实现对表单控件的扩 展 ...

  2. java基础知识-二进制

    1.二进制<0B>出现的原因 2. 八进制<0>和十六进制<0X>出现的原因:简化书写和记忆 3.十进制到其他进制的转换方法 method:除以进制数,直到商为0, ...

  3. Maven中的配置文件

    <span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...

  4. AWS–Sysops notes

    Monitoring, Metrics and Analysis 1.CouldWatch Introduction2.EC2 Status Troubleshooting3.Create A Cou ...

  5. http://vjudge.net/contest/view.action?cid=51142#problem/C 精度转换的一道题。。。

    C - Get-Together at Den's Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & ...

  6. [leetcode 120]triangle 空间O(n)算法

    1 题目 Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjac ...

  7. 背水一战 Windows 10 (54) - 控件(集合类): ItemsControl 的布局控件 - OrientedVirtualizingPanel, VirtualizingStackPanel, WrapGrid

    [源码下载] 背水一战 Windows 10 (54) - 控件(集合类): ItemsControl 的布局控件 - OrientedVirtualizingPanel, VirtualizingS ...

  8. 利用App漏洞获利2800多万元,企业该如何避免类似事件?

    上个月,上海警方抓捕了一个利用网上银行漏洞非法获利的犯罪团伙,该团伙利用银行App漏洞非法获利2800多万元. 据悉,该团伙使用技术软件成倍放大定期存单金额,从而非法获利.理财邦的一篇文章分析了犯罪嫌 ...

  9. PKI信息安全知识点

    1. 什么是X.509? X.509标准是ITU-T设计的PKI标准,他是为了解决X.500目录中的身份鉴别和访问控制问题设计的. 2. 数字证书 数字证书的意义在于回答公钥属于谁的问题,以帮助用户安 ...

  10. C语言Socket-单工通信(客户端向服务器发送数据)

    服务端(server) #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.li ...