今天,自己又要重新複習一次Solidity
計算機這個行業,學了忘,忘了學,學了還得忘
感覺自己一直很努力的在學習
但是卻沒有一種付出得到回報的感覺
哎
Solidity
先寫一個最簡單的Hello World吧
pragma solidity >=0.4.22 <0.7.0;
contract Hello{
string str="Hello World";
function hello() public view returns(string memory){
return str;
}
}
這就是最簡單的合約了
然後我們來看下4種權限標識符
1.public
2.private
3.internal
4.external
然後view和pure
view和pure都是不需要花錢的
view是涉及到了局部變量,但是不改變這個局部變量
pure是根本沒有設計到局部變量
整型
int 和uint
int是有符號的
uint是沒符號的
基本上用uint256就行了
位運算
a=a<<1
這就是
a=a*2
固定長度字節數組
pragma solidity >=0.4.22 <0.7.0;
contract Hello{
bytes1 a=0xaa;
bytes2 b=0xbbbb;
bytes3 c=0xcccccc;
function getLength1() public view returns(uint256){
return a.length;
}
function getLength2() public view returns(uint256){
return b.length;
}
function getLength3() public view returns(uint256){
return c.length;
}
}
動態字節數組
pragma solidity >=0.4.22 <0.7.0;
contract Hello{
bytes a = new bytes(2);
function setA(bytes memory _a) public {
a=_a;
}
function getLength() public view returns(uint256){
return a.length;
}
}
字符串轉bytes
pragma solidity >=0.4.22 <0.7.0;
contract Hello{
string str="helloworld";
function getBytes() public view returns(bytes memory){
return bytes(str);
}
}
字節數組長度
pragma solidity >=0.4.22 <0.7.0;
contract Hello{
string str="helloworld";
function getBytes() public view returns(bytes memory){
return bytes(str);
}
function getLength() public view returns(uint256){
return bytes(str).length;
}
}
獲取字符串第一個字符
pragma solidity >=0.4.22 <0.7.0;
contract Hello{
string str="helloworld";
function getBytes(uint256 i) public view returns(bytes1){
return bytes(str)[i];
}
function changeStr() public{
bytes(str)[0]="H";
}
function getStr() public view returns(string memory){
return str;
}
}
String Bytes
pragma solidity >=0.4.22 <0.7.0;
contract Hello{
string str="helloworld";
function getBytes(uint256 i) public view returns(bytes1){
return bytes(str)[i];
}
function changeStr() public{
bytes(str)[0]="H";
}
function getStr() public view returns(string memory){
return str;
}
function changeStr(uint256 index) public{
bytes(str)[index]="H";
}
function changeStr(bytes1 b) public{
bytes(str)[0]=b;
}
}
固定字節數組轉化爲動態字節數組
pragma solidity >=0.4.22 <0.7.0;
contract Hello{
bytes2 b=0xaabb;
function fixedBytesToDynamic() public view returns(bytes memory){
bytes memory dynamic=new bytes(b.length);
for(uint i=0; i<b.length;i++){
dynamic[i]=b[i];
}
return dynamic;
}
}
bytes和string的相互轉化
pragma solidity >=0.4.22 <0.7.0;
contract Hello{
function bytesToString(bytes memory b) public pure returns(string memory){
return string(b);
}
function stringToBytes(string memory s) public pure returns(bytes memory b){
return bytes(s);
}
}
數組
pragma solidity >=0.4.22 <0.7.0;
contract Hello{
function getArray() public pure returns(uint256[3] memory){
return [uint256(1),2,3];
}
}