【Solidity基礎】型の種類




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

Solidityの型

Solidityには整数を扱うint, uint型、文字列を扱うstring型、アドレスを扱うaddress型、配列型、構造体を扱うstruct、key-valueを扱うmapping型があります。型は他のプログラミング言語とそう変わりないので一つでも言語を習得している場合はすぐに使いこなすことができると思います。

  • int
  • uint
  • string
  • address
  • 配列
  • struct
  • mapping

intとuint

intは符号ありあり整数をuintは符号なし整数を扱うことができます。それぞれの型には8~256bitの間で8の倍数を指定することができ、指定しない場合は256bitがデフォルトとなります。

string

stringは文字列を入れることができます。文字列を代入できるだけで普通のstringと変わりませんが特殊な点が一つだけあります。

それはSolidityでは文字列の比較ができません。なのでkeccak256()という関数を使って16進数に変換したハッシュ値を比較します。

address

address型とはEtherやトークンが紐づけられているウォレットのアドレスやコントラクトのアドレスを扱うことができます。address.send()、address.transfer()メソッドでETHを送金することができます。詳細は下記を参照してください。

【Solidity基礎】address.sendとaddress.transferの違い

配列

配列型は固定長配列と可変長配列を定義することができます。配列にはlengthよpushのメソッドがあります。Solidityにはpopやremoveといった要素を取り除く関数がありません。

 

基本的にSolidityでは要素を削除することができません。Ethereumの開発ミュニティでも議論されていてブログにもまとめてもらっていたのでぜひ読んでみてください!

Solidityで配列の任意のデータを削除できない理由

struct

structは構造体を扱うことができます。使い方は見た目通りすごい簡単です。他の言語と変わらないかと思います。

struct特有の特徴として、struct内に複数の uintがある場合、できる限り小さい単位の uintを使うことで、Solidityが変数を一つにまとめることができ、ストレージを小さくすることができます。

ちなみにstruct以外でuint32などを定義してもuintのサイズに関わらず256ビットのストレージを確保するのでガスコストの節約にはなりません。

下記の場合、MiniStructの方がガスコストを低く抑えることができます。

mapping

mappingはキーバリューストアを扱うことができます。mappingも他の言語のMap型と使い方は変わらないです。msg.senderはコントラクトを実行した人のアドレスになります。

関連記事

【Solidity基礎】public, privateとexternal, internalの違いと使い所

【Solidity基礎】OpenZeppelinのOwnableについて

【Solidity基礎】storageとmemory

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 現在はTwitterなどSNSのテキスト解析を行うソーシャルメディア分析のサーバーサイドを開発中。言語はNode.js、Kotlinを使用。






コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です