区块链应用设计与开发_任务四Solidity代码.docxVIP

  • 1
  • 0
  • 约4.32万字
  • 约 42页
  • 2026-03-13 发布于广东
  • 举报

区块链应用设计与开发_任务四Solidity代码.docx

4.2-4

//contracts.sol

pragmasolidity0.4.19;

//Thisisasinglelinecommentinsolidity

/*Thisisamulti-linecomment

Insolidity.UsethiswhenmultipleconsecutivelinesShouldbecommentedasawhole*/

contractfirstContract{}

contractsecondContract{}

1fbrarystringLibrary{}

librarymathLibrary{}

interfaceIBank{}

interfaceIAccount{}

4.2.1-2

//定义结构体

struct{

stringname;

uintage;

boolisAdult;

uint[]ID;

}

创建结构体实例的语法如下。无需明确使用new关键字。new关键字只能用于创建合约或数组的实例,如下列代码所示:

people=myStruct(“Sam”,18,true,newuint[](3));

可以在函数中创建多个结构体实例。结构体可以包含数组和映射变量,而映射和数组可以存储结构体类型的值。

以下是一个结构体使用的示例:

pragmasolidity=0.6.00.9.0;

//定义的新类型包含两个属性。

//在合约外部声明结构体可以使其被多个合约共享。在这里,这并不是真正需要的。

structFunder{

addressaddr;

uintamount;

}

contractCrowdFunding{

//也可以在合约内部定义结构体,这使得它们仅在此合约和衍生合约中可见。

structCampaign{

addressbeneficiary;

uintfundingGoal;

uintnumFunders;

uintamount;

mapping(uint=Funder)funders;

}

uintnumCampaigns;

mapping(uint=Campaign)campaigns;

functionnewCampaign(addresspayablebeneficiary,uintgoal)publicreturns(uintcampaignID){

campaignID=numCampaigns++;//campaignID作为一个变量返回

//不能使用campaigns[campaignID]=Campaign(beneficiary,goal,0,0)

//因为RHS(righthandside)会创建一个包含映射的内存结构体Campaign

Campaignstoragec=campaigns[campaignID];

c.beneficiary=beneficiary;

c.fundingGoal=goal;

}

functioncontribute(uintcampaignID)publicpayable{

Campaignstoragec=campaigns[campaignID];

//以给定的值初始化,创建一个新的临时memory结构体,

//并将其拷贝到storage中。

//注意你也可以使用Funder(msg.sender,msg.value)来初始化。

c.funders[c.numFunders++]=Funder({addr:msg.sender,amount:msg.value});

c.amount+=msg.value;

}

functioncheckGoalReached(uintcampaignID)publicreturns(boolreached){

Campaignstoragec=campaigns[campaignID];

if(c.amountc.fundingGoal)

returnfalse;

文档评论(0)

1亿VIP精品文档

相关文档