견고성-계약
Solidity의 계약은 C ++의 클래스와 유사합니다. 계약에는 다음과 같은 속성이 있습니다.
Constructor − 컨트랙트 당 한 번 실행되며 컨트랙트 생성시 호출되는 생성자 키워드로 선언 된 특수 함수.
State Variables − 계약 상태를 저장하기위한 계약 당 변수.
Functions − 계약 상태를 변경하기 위해 상태 변수를 수정할 수있는 계약 별 기능.
가시성 한정자
다음은 계약의 기능 / 상태 변수에 대한 다양한 가시성 수량 자입니다.
external− 외부 기능은 다른 계약에 의해 호출됩니다. 내부 통화에는 사용할 수 없습니다. 계약 내에서 외부 함수를 호출하려면 this.function_name () 호출이 필요합니다. 상태 변수는 외부로 표시 할 수 없습니다.
public− 공용 기능 / 변수는 외부 및 내부에서 모두 사용할 수 있습니다. 공개 상태 변수의 경우 Solidity는 자동으로 getter 함수를 생성합니다.
internal − 내부 기능 / 변수는 내부적으로 또는 파생 된 계약에 의해서만 사용될 수 있습니다.
private − 개인 함수 / 변수는 내부적으로 만 사용할 수 있으며 파생 된 계약에서도 사용할 수 없습니다.
예
pragma solidity ^0.5.0;
contract C {
//private state variable
uint private data;
//public state variable
uint public info;
//constructor
constructor() public {
info = 10;
}
//private function
function increment(uint a) private pure returns(uint) { return a + 1; }
//public function
function updateData(uint a) public { data = a; }
function getData() public view returns(uint) { return data; }
function compute(uint a, uint b) internal pure returns (uint) { return a + b; }
}
//External Contract
contract D {
function readData() public returns(uint) {
C c = new C();
c.updateData(7);
return c.getData();
}
}
//Derived Contract
contract E is C {
uint private result;
C private c;
constructor() public {
c = new C();
}
function getComputedResult() public {
result = compute(3, 5);
}
function getResult() public view returns(uint) { return result; }
function getData() public view returns(uint) { return c.info(); }
}
Solidity First Application 장에 제공된 단계를 사용하여 위 프로그램을 실행하십시오 . 다양한 방법의 계약을 실행합니다. E.getComputedResult () 다음에 E.getResult ()가 표시됩니다.
산출
0: uint256: 8