<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 訪問函數(Getter Functions) 編譯器為自動為所有的`public`的狀態變量創建訪問函數。下面的合約例子中,編譯器會生成一個名叫`data`的無參,返回值是`uint`的類型的值`data`。狀態變量的初始化可以在定義時完成。 ``` pragma solidity ^0.4.0; contract C{ uint public c = 10; } contract D{ C c = new C(); function getDataUsingAccessor() returns (uint){ return c.c(); } } ``` 訪問函數有外部(external)可見性。如果通過內部(internal)的方式訪問,比如直接訪問,你可以直接把它當一個變量進行使用,但如果使用外部(external)的方式來訪問,如通過`this.`,那么它必須通過函數的方式來調用。 ``` pragma solidity ^0.4.0; contract C{ uint public c = 10; function accessInternal() returns (uint){ return c; } function accessExternal() returns (uint){ return this.c(); } } ``` 在`acessExternal`函數中,如果直接返回`return this.c;`,會出現報錯`Return argument type function () constant external returns (uint256) is not implicitly convertible to expected type (type of first return variable) uint256.`。原因應該是通過外部(external)的方式只能訪問到`this.c`作為函數的對象,所以它認為你是想把一個函數轉為`uint`故而報錯。 下面是一個更加復雜的例子: ``` pragma solidity ^0.4.0; contract ComplexSimple{ struct Cat{ uint a; bytes3 b; mapping(uint =&gt; uint) map; } // mapping(uint =&gt; mapping(bool =&gt; Cat)) public content; function initial(){ content[0][true] = Cat(1, 1); content[0][true].map[0] = 10; } function get() returns (uint, bytes3, uint){ return (content[0][true].a, content[0][true].b, content[0][true].map[0]); } } contract Complex { struct Data { uint a; bytes3 b; mapping (uint =&gt; uint) map; } mapping (uint =&gt; mapping(bool =&gt; Data[])) public data; } ``` 文檔中自帶的的這個Demo始終跑不通,數組類型這里不知為何會拋`invalid jump`。把這塊簡化了寫了一個`ComplextSimple`供參考。 需要注意的是`public`的`mapping`默認訪問參數是需要參數的,并不是之前說的訪問函數都是無參的。 `mapping`類型的數據訪問方式變為了`data[arg1][arg2][arg3].a` `結構體(struct)`里的`mapping`初始化被省略了,因為并沒有一個很好的方式來對鍵賦值。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看