太閤坊開発言語solity入門


このSolidity教程に関するブログは多くのSolidityの特性を示しています.本教程はエーテル坊の仮想マシンとプログラミングに対して一定の理解があると仮定します.
エーテル坊は、「世界コンピュータ」が非常に強力なグローバル共有インフラを提供し、Solidityというプログラミング言語を使って、センター化アプリケーションを構築します.
私たちのSolidity教程を始めて、Solidityを紹介します.
Solidityとは何ですか?
エーテル坊Solidityはスマート契約向けの高級言語で、その文法はJavaScriptと似ています.solityは、EVMで実行されるマシンクラスコードを生成するためのツールです.solityコンパイラは高度なコードを取得し、より簡単なコマンドに分解します.SolidityコードはContractsに実装されています.
エーテル坊契約中のソロシティ
契約は太閤坊を中心としたアプリケーションの基本構築モジュールです.すべての変数と関数は契約の一部です.これはすべての項目の起点です.MyFirstという空契約はこのように見えます.
version pragma ^0.4.19;
contract MyFirst{
}
あなたのスクリーンに目を向けてください.これからは私たちのSolidity教程でコード化を開始します.
Solidityファイルのレイアウト
ソースファイルは、命令およびpragma命令を含む任意の数の契約定義を含むことができる.
Version Pragma
Version Pragmaはコード使用を定義するSolidityコンパイラバージョンの声明です.
version pragma ^0.4.00;
注意:上に表示されているソースファイルはバージョン0.4.0より前のコンパイラを使ってコンパイルしたり、バージョン0.5.0からのコンパイラで実行したりしません.
他のソースファイルをインポート
Ethereum SolidityはJavaScriptで利用できる導入文と非常に似た導入文をサポートしています.Solidityはdefault exportの概念を知らないけれども.
グローバルレベルでは、以下のようなimport文が使用されます.
import "filename";
上記のステートメントは、全グローバルシンボルをfilenameから現在のグローバル範囲に導入する.
import * as symbolName from "filename";
コメント
Solidityは他の言語のように、単行と複数行の注釈を使用することができます.
// This is a single-line comment.
/*
This is a
multi-line comment
*/
今、私たちがSolidity教程をさらに深く知る前に、エーテル坊には三つのプロジェクトを格納できる区域があることを知っておくべきです.
  • は、すべての契約状態変数の位置を格納します.各契約書は自分の記憶があり、関数呼び出し間は長い間持ちます.
  • メモリメモリメモリメモリメモリメモリ:一時値を保存し、関数コール間で消去し、より安価に使用する.
  • スタックStock:小さいローカル変数を保存し、ほとんど無料で使用できますが、限られた数の値しか保存できません.
  • ほとんどの種類については、保存すべき場所を指定できません.使うたびにコピーされます.
    はい、もうエーテル坊Solidityの中の保存場所を知っているなら、普通の値の種類を教えてあげます.
    ソロでの値の種類
    これらのタイプの変数は常に値によって渡されるので、以下のタイプも値タイプと呼ばれる.
    ブール
    キーワード:book
    値は定数、すなわちtrueまたはfalseです.
    型をととのえる
    キーワード:int/uint(uint 8からuint 256、ステップサイズは8(符号なし、最大256桁)、int 8はint 256)
    さまざまなサイズの記号と符号なし整数があります.
    例:
    contract MySample{
    uint UnsignedInt =50;
    }
    上記の文ではInsignedIntという名前のuintを作成し、50に設定しました.
    住所
    キーワード:address
    20バイトの値を保存します.アドレスタイプもmembersがあり、すべての契約の基礎となります.
    住所メンバー:balanceとtransfer
    プロパティbalanceを使ってアドレスの残額を調べ、Transfer関数を使ってイーサネットをアドレスに送ることができます.
    address x = 0x123;
    address myAddress = this;
    if  (x.balance < 10 && myAddress.balance > = 10)
    x.transfer(10);
    文字列
    String:文字列文字はダブル引用符またはシングル引用符で「foo」または「bar」のように作成されます.
    任意の長さのUTFデータに使用します.
    string language ="Solidity";
    これらの値の種類は、演算子を含む表式で相互作用します.次に、私たちのSolidity教程で、いろいろな演算子を教えます.
    演算子
    ソロの演算子はJavaScriptと同じです.Solidityには4種類の演算子があります.
    算術演算子
    Solidityは非常に簡単な数学演算を持っています.以下はほとんどのプログラミング言語と似ています.
  • 増加:x+y
  • 減算:x-y
  • 乗算:x*y
  • 除法:x/y
  • 取ります./求めます.x%y
  • Solidityはまた、指数演算子を使用するオプションを提供しています.具体的には以下の通りです.
    uint x = 10 **  3; // equal to 10^3 = 1000
    増分演算子
    インクリメンタル演算子の安定性:a+、a-、+a、-a、a+=1、a=a+1
    他のプログラミング言語に適用されるルールも同様です.
    ビット単位の演算子
    演算子は以下の通りです.(ORの順に)''(124)',(ビット別に)''''',(ビット順に右に)'''''''''',(ビット別に左に)''''''''''、''
    論理演算子
    Solidityにおける論理演算子:!(論理否定)、&(論理和)、𞓜|(論理または)、=(等しい)、!=(等しくない)
    例:
    contract operators {
    // Arithmetic Operators
    // +,-,*,/, %, **
    // Incremental Operators
    // a++, a--, a+=1, a=a+1,++a,--a;
    a=10;
    a= a++; //here, output will be 10, because the value is first returned and then then increment is done
    a=++a;
    //Logical Operators
    !, &&, ||, ==, !=
    isOwner = true && false;
    var orValue= 0x02 | 0x01; // output would be 0x03
    //Bitwise Operators~,>>, <
    今はもっと複雑なデータタイプが必要です.そのために、Solidityは構造を提供します.
    solityデータ構造
    Solidityは3種類のデータ構造を提供します.
    構造Structs
    Solidityは、Structs形式で新しいタイプを定義する方法を提供しています.Structsはカスタムタイプで、複数の変数をグループ化することができます.
    pragma solidity ^0.4.0;
    contract Ballot {
    struct Voter { // Struct
    uint weight1, weight2, weight3;
    bool voted;
    address delegate1, delegate2, delegate3, delegate4;
    string name;
    uint vote1, vote2, vote3, vote4, vote5;
    uint height1, height2, height3   } }
    注意:構造は16人のメンバーしかいません.メンバーを超えると以下のエラーが発生する可能性があります.
    構造は、複数の属性を持つより複雑なデータタイプの作成を可能にします.
    今、もし集合が必要なら、例えば住所はどうすればいいですか?はい、多くの言語のように、Solidityも行列があります.
    配列Arays
    Solidityの配列はコンパイル時の固定サイズを持つことができます.
    uint[3] fixed;  //array of fixed length 3
    uint[] dynamic; //a dynamic array has no fixed size, it can keep growing
    構造配列も作成できます.以前に作成されたVoter構造を使用します.
    Voter[] voting;
    注意:配列宣言をpublicにすると自動的にgetterメソッドを作成します.
    Voter[] public voting;
    マップmappings
    マッピングは、各可能なキーが存在し、バイト表現が全てゼロの値にマッピングされるように、ハッシュテーブルとして考えられ得る.
    マップ宣言:
    Mapping(_Keytype => _ValueType )
    注意:_Keytypeはほとんどどんな種類でもいいです.ダイナミックサイズの配列、契約、列挙、構造を除いて.
    例:
    contract MappingExample {
    mapping(address => uint) public balances;
    function update(uint newBalance) {
    balances[msg.sender] = newBalance;  }}
    contract MappingUser {
    function f() returns (uint) {
    MappingExample m = new MappingExample();
    m.update(100);
    return m.balances(this);
    }}
    制御構造
    switchとgotoを除いて、JavaScriptの多くの制御構造はSolidityで利用できます.
    だからあります:if、else、while、do、for、break、continue、return、?:CまたはJavaScriptから知られている通常の意味を使います.
    注意:CとJavaScriptのように非ブールタイプからブールタイプへのタイプ変換はありません.
    これらの制御構造がSolidityでどのように使用されるかを見てみましょう.
    contract ControlStructure {
    address public a;
    function ControlStructure>){
    // if-else can be used like this
    if(input1==2)
    a=1;
    else
    a=0;
    // while can be used like this
    while(input1>=0){
    if(input1==5)
    continue;
    input1=input1-1;
    a++;}
    // for loop can be used like this
    for(uint i=0;i<=50;i++) { a++; if(a==4) break; } //do while can be used like this do { a--; } (while a>0);
    // Conditional Operator can be used like this
    bool IsTrue = (a == 1)?true: false;
    /*will show an error because
    there is no type conversion from non-boolean to boolean
    */
    if(1)
    {
    }
    私たちのSolidity教程ブログを続けて、契約書で実行できるコードユニットについて話しましょう.これらは関数と呼ばれています.
    関数
    以下はSolidityで関数を宣言する方式です.
    function sampleFunc(string name, uint amount) {
    }
    上記の宣言は空体関数で、二つのパラメータがあります.一つの文字列と一つのuintです.
    この関数を呼び出すことができます.
    sampleFunc("Shashank", 10000);
    関数については、Solidityも関数修飾子を提供します.
    関数修飾子
    関数の動作を簡単に変更するために使用されます.これらの条件は、スマート契約の関数定義において宣言されているので、関数の呼び出し前にも確認できます.
    例:関数の所有者または作成者だけを通じてKill contract関数を呼び出す場合.
    contract FunctionModifiers{
    address public creator;
    function FunctionModifiers() {
    creator = msg.sender;}
    Modifier onlyCreator() {
    if(msg.sender!=creator){
    throw; }
    _; //resumes the function wherever the access modifier is used
    }
    function killContract() onlyCreator{ //function will not execute if an exception occurs
    self-destruct(creator); }}
    引き継ぐ
    Solidityは、多状態を含むコードをコピーすることにより、複数の継承をサポートします.
    contract Owned {
    address Owner ;
    function owned() {
    owner = msg.sender;
    }}
    contract Mortal is Owned {  // 'is' keyword is used for inheritance
    function kill(){
    self-destruct(owner);   }}
    contract User is Owned, Mortal //Multiple inheritance
    {
    string public UserName;
    function User(string _name){
    UserName = _name;
    }}
    はい、上で論じた概念はSolidityプログラミングを使用するのに十分だと思います.
    コードを書きに行きましょう
    これにより、このSolidity Tutorialブログを終了しました.このブログを読むのが好きで、内容が豊富であることを発見してほしいです.これまではSolidity Programeming Languageの理解が必要です.今から練習しましょう.
    もしエーテル坊の開発を早く進めたいなら、私達が心を込めて作った教程を見てください.
    エーテル坊入門教程は、主に知能契約とdapp応用開発を紹介し、入門に適しています.
    匯智ネットのオリジナルの翻訳、転載して出所を明示して下さい.ここは原文です.