2018年5月31日いまね、Twitterで色々と情報得るべく、フォローする人たちを探してはポチッと押していく作業をしていました。イーサリアムでのゲーム開発を学ぶチャプター9:別の関数とビジビリティでた〜、意味不明言語〜!!wビジビリティってなんじゃい??(visibility)意味としては、目に見える度合い、視界、見通し、可視性、視認性との事。意味はまぁよしとして、以下読んで行きましょう。要約すると、private関数なのにデータ引っ張ってきた事になるから、データは引っ張ってこれないよってエラーがでる、という事ですね。要約になったかな、、wpublicとprivateの他に、internalとexternalなるものがあると、、、4種類あるっていう事なのか。今回のエラーの原因としてprivateだとアクセスできないが、別の関数だとそれが可能になるとのことで、答えとしてはinternalを使うとできるようになるってことですね。このコントラクトから継承したコントラクトにもアクセスできるようになる。このコントラクトから継承したコントラクトにはアクセスできない。いう事になるんですね。ふむふむっ、、なるへそ。public,privateとexternalとinternalの違いと使い所externalに関しては、コントラクト外からしかアクセスできない、という事になりますね。ことは、外部から利用するための関数にexternalを使用するという事になりますよね。先が見えていないのでどう使い分けるかは、高妻さんのブログにも書いてますが、パニックになりかねないので、今はスルーしますw宣言方法は以下のようになりますね。{}と変更すればOKです!では次っ!!チャプター10:ゾンビは何を食べるのか?やべぇ〜ここ解説するとなるとめっちゃなげぇ〜w要約してそんなに長くならないようにします!そして衝撃的な事実が発覚wwゾンビの好物はクリプトキティズwwwまぁ食べるといってもデータだけだから、実際の猫がゾンビになるわけではないのでご安心をwここでは別のコントラクトとやりとりしなくてはいけないので、どうすればやりとりが可能になるかの説明が書いてありますね。ちなみに、、、先ほどexternalの話をしましたが、クリプトゾンビーズからクリプトキティズにアクセスする場合、その関数がexternalじゃないと外部からのアクセスができないという話をしましたよね。このチャプターのテストの中に出て来ますが、getKitty関数はexternalで宣言しているのです。後で出てくるので、その時また言いますね!まずは外部コントラクトからアクセスしたい場合、interface関数を定義するとのこと。この例から言うと、、、luckyNumberコントラクトのinterfaceを定義するのだ。returns(uint);}となっていたんですね。interfaceを定義して、functionから始まっているが、関数を定義する場合だとお尻が{}となるのだが、ここは関数の定義ではないため、セミコロン(;)になっています。これを見てコンパイラがinterfaceだと判断するとのことです。へぇ〜なるへそ!!という事で、テストだ!!ひぃ〜、、貼り付けたはいいが長い、、、wgetKitty関数のreturns(の後は改行して、パラメータをわかりやすく改行しているだけなので、少し多いってだけで今までと同じ事をしているから、長いってだけで勘違いしちゃダメよ!(自分に言い聞かせw)ここで宣言されているgetKitty関数はexternalで宣言しているので、外部からのアクセスができる状態である事を意味してますね。view修飾子もついているので、見るのはOKだけど、書き換えはできないよって、事で理解しておくといいかな。genes);となります。genes);}となります!!ふぅ〜、CryptoZombie史上一番長いコードを書いたんじゃないでしょうかw間違っていたら悪いので、テストだ!の後にあるgetKitty関数をコピーして使ってくださいねwこれで使うまでの自然準備は完了した、という事になりますね!!次のチャプターでは使えるように設定する方法をやりますよ!という事で今日のところはここまで!!次回は午後は15時頃から更新します!!その間はレッスン1から英語バージョンで挑戦してみつつ、振り返ろうと思います。このブログでは主に読書した内容を元に、「ヒラメキを発信する」をテーマとして毎日更新しています。役に立ってくれると嬉しいです。