2019年09月26日11:17:55
编译网址:
http://remix.ethereum.org/#optimize=false&evmVersion=null&version=soljson-v0.4.24+commit.e67f0147.js
uint 无符号整型 只能表示正数
int和js中的number类似
以太坊的地址
以太坊地址表示的字符串“0x3211B6a9fc5ea8bEf649bb617E3123a5755A0aC1”大概42位,以太坊一直是20个字节,一个字节8位,所以有160位
是合约里的全局变量,它是部署合约的地址。
balance 查看余额
transfer 转账
address owner;
//谁部署合约,这个地址就是谁
owener=msg.sender;
uint [5] arr=[1,1,1,1,1];
for(uint i=0;i<arr.length;i++){
}
arr.push(6);
mapping(string=>uint) users;
//{woniu:18}
users["woniu"]=18;
Struct Student{
uint age;
uint id;
string name;
uint phone;
}
woniu=Student(18,141001,"xiaoye",151611895417);
enum sex{male,female};
public共有的,合约内外都能调用;
private为私有的,只有合约内部可以调用。
也可以修饰状态变量;
状态变量默认是私有的;
pragma solidity ^0.4.24;
contract Test{
uint public a=256;
int public b=254;
function add() private view returns(uint){
return a + uint(b);
}
function ADD() public view returns(uint){
return add();
}
}
如果?个函数??,访问了状态变量,但是没有修改,我们使?view或者constant修饰。
如果访问了状态变量,?且修改了,那么就不能constant和view,否则会报错,不修饰即可。
如果没有使?过状态变量,我们要修饰为pure。
如果你修饰为constant,但是你在函数中修改了,效果是:不会报错,正常执?,但是值不会改
变。
pragma solidity ^0.4.24;
contract Test{
uint public a=256;
int public b=254;
uint private c=1000;
function add() private view returns(uint){
return a + uint(b);
}
function ADD() public view returns(uint){
return add()+c;
}
function returnString() public pure returns(string){
return "hello";
}
}
pragma solidity ^0.4.24;
contract Test{
//以太坊地址的?长度,?? 20个字节 ,20 * 8 = 160位 ,所以可以??个 uint160 编码。
//地址是所 有合约的基础,所有的合约都会继承地址对象,通过合约的地址串,调?合约内的函数。
//可以进?加减,需要强制转换
//1. 匿名函数:没有函数名,没有参数,没有返回值的函数,就是匿名函数
//2. 当调??个不存在的?法时,合约会默认的去调?匿名函数
//3. 匿名函数?般?来给合约转账,因为费?低
string public str;
address public addr1=0x00CA35b7d915458EF540aDe6068dFe2F44E8fa733c;
function () public payable{
}
function add() public view returns(uint160) {
return uint160(addr1) + 10;
}
function getBalance1() public view returns(uint256){
return this.balance;
}
function getBalance() public view returns(uint256){
return addr1.balance;
}
}
//1. 转账的时候单位是wei
//2. 1 ether = 10 ^18 wei (10的18次?)
//3. 向谁转钱,就?谁调?tranfer函数
//4. 花费的是合约的钱
//5. 如果?额不?,transfer函数会抛出异常
//send转账与tranfer使??式?致,但是如果转账?额不?,不会抛出异常,?是会返 回false
//由合约向addr1 转账10以太币
function transfer() public {
addr1.transfer(10 * 10 **18);
}
61、solidity编程语言类型——2020年07月12日12:26:21
原文:https://www.cnblogs.com/oneapple/p/13287977.html