目次
最初の質問
次のコード演習を完了してください
簡単なスマート コントラクト セットを作成して取得し、学生番号の下 2 桁をコード セットの取得として使用してください。自分の学籍番号(下2桁)を設定し、自分の学籍番号(下2桁)を取得するということです。
// SPDX-License-Identifier:MIT
pragma solidity ^0.8.0;
contract Test1 {
uint8 id;
function set(uint8 _id) public {
id = _id;
}
function get() public view returns(uint8){
return id;
}
}
2番目の質問
まずはコードを見てください
// SPDX-License-Identifier:MIT
プラグマ Solidity ^0.8.0;契約テスト1 {
文字列名 = 'lyk';
文字列名 = unicode'罗永康';
関数変更(文字列メモリ_name) public { name = _name; 関数 get() パブリック ビュー returns(文字列メモリ){ 名前を返します。 関数 f(int _a) public pure returns(int){ _a++; _a を返す; } }
質問に答える
1. 文字列の代入と定義で注意すべき点について話します。
2. 上記のどの機能がガスを消費するのか、どの機能がガスを消費しないのか、またその理由について話してください。
3. 純粋関数とビュー修正関数の違いは何ですか?
答え:
1. 文字列は参照データ型のため、関数のパラメータ(入力パラメータ、出力パラメータ)として使用する場合はメモリ上に指定する必要があります。
文字列が漢字として割り当てられている場合、ASCII では漢字を表現できないため、トランスコードに Unicode を使用する必要があります。漢字は 3 バイトに相当します
2. 上記の変更関数は、状態変数名が変更され、pure および view 修飾子が使用できないため、ガスを消費します。get 関数と f 関数は、pure 修飾子と view 修飾子が使用されるため、ガスを消費しません。
3. pure によって変更された関数は状態変数の読み取りや変更を行わず、ビューは状態変数の読み取りのみを行い、状態変数の変更は行いません。pure と view で変更された関数はガスを消費しません