1. 学ぶ
  2. /
  3. コース
  4. /
  5. R における S3 と R6 を使ったオブジェクト指向プログラミング

Connected

演習

Make it Classy (1)

class() 関数はクラスを取得するだけでなく、上書きすることもできます。構文は次のとおりです。

class(x) <- "some_class"

これは特にリストで便利です。リストは他の変数をまとめて、より複雑な変数を作れるからです。(レゴのたとえを思い出してください。個々の変数はレゴのピースのようなもので、リストを使えば好きな形を組み立てられます。)

この演習では、チェスの対局の状態を保存するオブジェクトを見て、そのクラスを上書きします。

演習を理解するために、チェスについて少し知っておく必要があります。

  • チェスは「white」と「black」という2人のプレイヤーで行います。
  • 各プレイヤーは6種類の駒(king、queen、bishop、knight、rook、pawn)を持ちます。
  • 各駒の位置は、行("a" から "h")と列(1 から 8)で記録できます。

指示

100 XP

ワークスペースには、リスト変数 chess があらかじめ用意されています。

  • chess の構造を把握するために中身を確認しましょう。
  • chess のクラスを "chess_game" に上書きしてください。
  • is.list()(docs)を使って、chess が引き続きリストかどうかを確認しましょう。
  • 盤上に残っている駒の数を求めてください。
    • 良い方法は、unlist()(docs)でオブジェクトをフラット化して、length()(docs)で長さを返すことです。