
[Q & A] collect 関数と safeCollect関数はどう使う?
投稿日: 2017年12月21日
コードモンキーサポートデスクに寄せられたユーザーからのご質問およびコードモンキーサポートデスクからの回答を紹介しております。
今回寄せられたご質問は、コードの冒険のステージ90-100あたりで使う関数collect()とsafeCollect()の使い方について。
チャレンジNo. 100などの、safeCollect()とcollect()の使い方がよくわかりません。
いつもコードモンキーをご利用いただきありがとうございます。
いただいたご質問につき回答いたします。
コードの冒険の中で出てくる”collect”や”safeCollect”は、プログラミングにおける「関数」というものです。そしてそれらの関数は自分で定義して使うことができます。
たとえば、チャレンジNo.100で、以下のようにchase関数とcollect関数を定義し、for文の中で実行してみましょう
#chase関数の定義 chase = (m) -> until near m turnTo m step 1 #collect関数の定義 collect = (x)-> chase x grab() chase pile drop() for m in matches #collect関数の呼び出し collect m
—–
上のコードをお試しいただくと、猫に追いかけられてしまうことがわかるとおもいます。
そこで、以下のように、until cat.sleeping() を利用して、「猫が寝るまで待つ」というコードをcollect関数内に加えてみます。
—-
#chase関数の定義 chase = (m) -> until near m turnTo m step 1 #猫を待つ機能を加えたcollect関数の定義 collect = (x) -> #猫が寝るまで待つ until cat.sleeping() wait() chase x grab() chase pile drop() # for文の中でcollectを呼び出し for m in matches collect m
—-
このコードなら、猫においかけられることなく、「安全に」マッチをとりにいくことができるはずです。
CodeMonkeyのコードの冒険では、以上2つの例のcollect関数のうち、前者がcollectという名前で登場(チャレンジNo.97など)し、後者のuntil cat.sleeping()を加えた安全な方の関数が”safeCollect”という名前で登場しています(チャレンジNo.99など)。
これが、ゲーム中で出てくるcollect とsafeCollectという2つの関数の違いになります。
以上、参考になりましたら幸いです。
引き続きコードモンキーをお楽しみくださいませ。
コードモンキーサポート