solidity study-cryptoゾンビチュートリアル2

2045 ワード

mapping、addressの2種類の資料型が登場します.
エーテル口座に住所があります.
アドレスは特定のプレイヤーが所有します.(一意id)
mapping
もう1つの構造化データを格納する方法.
定義#テイギ#
key-valueリポジトリ.
mapping(address => uint) public accountBalance;
キーはaddressで、値はuintです.
msg.sender
関数を呼び出す人のアドレスを指します.
使用してマッピングを更新
mapping( address => uint) favoriteNumber; 
//key값 address, value값 uint 인 것 mapping
function setMyNumber(uint _ myNumber)
//_mynumber를 인수로 갖는 함수 설정
favoriteNumber[msg.sender] = _myNumber;
// 자신의 주소를 인수로받아 u int값을 출력하는 favoritenumber를 호출하고, 이를 _myNumber에 저장. 
function whatIsMyNumber() public view returns(uint){
return favoriteNumber[msg.sender];}
//what is my number은 자신의 주소에 대한 값을 반환한다. \
どうして急に自分の住所が必要なの?
Require
一部の条件が真でない場合は運転を停止します
function sayHi(string_name) public returns(string){
require(keccak256(_name)==keccak256('Vita'));
return "hi";
}
// Vita가 아닌 다른 것으로 인수를 주면 에러메시지와 함께 함수 실행이 안될거임
ifゲートみたいな感じ
継承
コードが長くなるとグループ化
に道を教える
contract A is B{}
사용
// A 컨트랙트는 B 컨트랙트에 있는 함수에 모두 접근이 가능해진다. 
import
他のファイルを読み込むときにimportを使用する
import './someothercontract.sol';
変数ストレージにはメモリとストレージがあります.
前の好奇心を解決!
storage:変数を永続的に保存
memory:変数を一時的に格納
structとarrayの処理に使用します.
永続変更時:storage
データのコピー時のみ:memory
この部分は全体的によく理解できません.
内部と外部
内部:定義された関数を継承するContractのContractにアクセスできますが、他のユーザーは使用できません.
external:契約外でのみ呼び出され、他の関数では呼び出されません.
contract Sandwich{
 uint private sandwichesEaten =0;
 function eat() internal{
 sandwichesEaten++;
 }
}
他の輪郭と対話します.
契約のインタフェースを定義する必要があります.
全体的によくわかりませんが...
インタフェースの利用
インタフェースを定義した後、
また、Contractでインタフェース呼び出し関数を使用することもできます.
複数の戻り値を処理します.
ドアが
JavaScriptと同じ
function eat(string sandwich)public {
if (keccak256(sandwich)== keccak256("blt")){
eat();
}
}