鍋の中

Miliファンの雑文置き場

【world.execute(me);】「不正な引数」って何?という話

ブログ1本目。world.execute(me); について書こうと思います。なんとなくwemを聴いていて、そういえばillegal augumentってソースコードだとどう書いてあるんだっけ、なんか変な引数を渡してたりするのかな…と思ったので、そこらへんの記述を読んでみたいと思います。プログラミングの話には自信がないのでお気持ちで書きます

さて、歌詞の「You have made some ILLEGAL AUGUMENTS…」にあたるソースコードはこの部分です。

try{
me.setOpinion(me.getOpinionIndex("you are here"), false); 
} 
catch(IllegalArgumentException e){ 
world.announce("God is always true."); 
}

ソースコード貼り付けとかできるんだ…って驚いてる)
 これはtry-catch文と呼ばれるもので、例外処理を行います。誤解を恐れずざっくり言うと、 try{ 以下の行に書いてあることを実行し、うまく行かなかった時に catch( ~ ){ 以下の行に書かれたことを実行します。歌詞では「君が渡してしまったね 不正な引数を」と歌われていますが、具体的に何が不正で、その結果どうなったのか、ということは分かりません。その二つがソースコードには(一応)書かれています。

ひとまずcatch以下の起こったことについて読んでみます。こちらはシンプルで、God is always true. というアナウンスをします。なかなか意味深ですが、踏み入った考察は主眼じゃないので置いておきます。ちなみに、world.announceという関数は、後の「いち、に、さん、し…」という部分でも使われています。

つぎに、"君"が何をしようとして不正な引数を渡してしまったのか、ということです。ソースコードのこの部分です。

me.setOpinion(me.getOpinionIndex("you are here"), false);

そのまま読むと、「meのもつOpinionのうち、"You are here" というものの存在(正誤?)をfalseに書き換える」といった感じでしょうか。

おそらく、"You"が「Youはここにいる」と"me"が思わないようにmeを書き換えようとした。しかし失敗した…と解釈できると思います。プログラムを書いている存在がGodだとしたら、GodがYouにそうさせた(失敗することまで織り込み済みで?)のでしょうか。このへんは曖昧なところです。

また、何が「不正な引数」だったのかもはっきりとは分かりません。"you are here"というOpinionがmeの中にそもそも存在しなかったか、それを書き換えることができなかったか…でしょうか。

めちゃくちゃ余談ですが、「君がここにいない」という言葉はなんとなくworld.search(you);みがありますね。ここで見つけられなくなったイフがwsyだったりしたらアツいですよね(はかどる妄想)
 
さて、なんとも中身のない記事ですが、一旦この辺りで終わりにします。読んでくださってありがとうございました。