目次
ちょっと間があいてしまったが、ようやくIoの1日目を終了。 なれない感じの言語なので苦労しました。 今回もセルフスタディの私の回答が最後の方に記載されてます。見たくない人は気をつけてください。 ツッコミ大募集です。コメント欄にどしどしコメントください。そこは違うだろ?こっちのほうがいいのでは?という感じで。
感想:
プロトタイプ言語であり、すべての言語はクローンだそうです。
○手始めに
○メソッド
○リストとマップ
○true、false、nil、singleton
○インタビュー
やりながら感想:
★セルフスタディ
(探してみよう)
○Ioのいくつかの問題点の例 見つけられず。。。英語がダメダメ。。。
○質問に答えてくれるIoコミュニティ
(確認してみよう)
○1 + 1を評価してから、1 + “one"を評価する。Ioは強く型付けされた言語か?
Io> 1 + 1 ==> 2 Io> 1 + “one”
Exception: argument 0 to method ‘+’ must be a Number, not a ‘Sequence’
message ‘+’ in ‘Command Line’ on line 1
ということで、型付けは強いです。
</div>
**○0は真か偽か?空文字列はどうか?nilは真か偽か?**
<div>
Io> 0 ==> 0 Io> true and 0 ==> true Io> true and "” ==> true Io> "" ==> Io> true and nil ==> false Io>
0、空文字列はtrue、nilはfalseでした。
</div>
**○プロトタイプに存在するスロットを確認するにはどうすればよいか?**
<div>
Io> Highlander := Object clone ==> Highlander_0x1a233a0: type = “Highlander”
Io> hoge := Highlander clone ==> Highlander_0x1a83630:
Io> hoge proto slotNames ==> list(type) Io> Highlander name := “arnold” ==> arnold Io> hoge slotNames ==> list() Io> hoge proto slotNames ==> list(type, name) Io> Highlander slotNames ==> list(type, name) Io> hoge name ==> arnold Io> hoge getSlot(“name”) ==> arnold
こんな感じ。slotNamesでスロット名を確認し、スロット内部についてはgetSlotで確認できます。
</div>
**○等号(=)、コロン等号(:=)および、コロンコロン等号(::=)の違いはなにか?どのようなときに使うか?**
<div>
<table class="list_view">
<thead>
<tr>
<th>演算子</th>
<th>説明</th>
</tr>
</thead>
<tbody>
<tr class="spec">
<td>:::=</td>
<td>スロットへの代入+setterの追加</td>
</tr>
<tr class="specalt">
<td class="alt">:=</td>
<td class="alt">スロットへの代入</td>
</tr>
<tr class="spec">
<td>=</td>
<td>スロットへの代入(ただし、スロットが存在しない場合は例外が発生)</td>
</tr>
</tbody>
</table>
とまぁ、記載したが、実際に動かして確認しました。
Io> Highlander := Object clone ==> Highlander_0x223b800: type = “Highlander”
Io> hoge := Highlander clone ==> Highlander_0x21acd60:
Io> hoge slotNames ==> list() Io> hoge name ::= “arnold” ==> arnold Io> hoge slotNames ==> list(setName, name) Io> hoge sword := “long sword” ==> long sword Io> hoge slotNames ==> list(setName, name, sword) Io> hoge clothes = “armor”
Exception: Slot clothes not found. Must define slot using := operator before updating.
message ‘updateSlot’ in ‘Command Line’ on line 1
</div>
### (試してみよう)
**○ファイルからIoプログラムを実行せよ**
<div>
ファイル「great.io」を作成し、以下を入力。
Highlander := Object clone Highlander giveWarCry := “Woooooooo!!” println Highlander giveWarCry()
で、以下のコマンドを実行する。
$ io great.io Woooooooo!!
</div>
**○スロットの名前を指定して格納されているコードを実行せよ**
<div>
Io> Masason := Object clone ==> Masason_0x20ae7d0: type = “Masason”
Io> Masason recieveNiceTweet := method(“やりましょう” println) ==> method( “やりましょう” println ) Io> Masason getSlot(“recieveNiceTweet”) ==> method( “やりましょう” println ) Io> Masason getSlot(“recieveNiceTweet”) call やりましょう ==> やりましょう
callとgetSlotが鍵ですね。
</div>
1日目の途中で間があいてしまったのでシンタックスを忘れてしまう始末。。。
ただ、そんなに込み入った記述もないので、最初に勉強することは少ないかもしれないです。
まだメソッドをあとから追加とか、cloneしたあとにまたプロトタイプを変更して反映可能など、考え方になれないもところがありますが、良い頭の体操になってます。
間を置かずに3日目まで行かないと!!
comments powered by Disqus
See Also by Hugo
- 「7つの言語 7つの世界」 Ruby 1日目(Jugemより移植)
- 「7つの言語 7つの世界」 Ruby 3日目(最終日)(Jugemより移植)
- 「7つの言語 7つの世界」 Ruby 2日目(Jugemより移植)
- JustTechTalk#02 形態素解析のあれやこれや@ジャストシステムに参加しました。
- Domain-Specific Pretraining for Vertical Search: Case Study on Biomedical Literatureという論文を読んだ