开始使用免费开始使用

Make it Classy (1)

除了获取类,class() 函数还可以用来重写对象的类。语法如下:

class(x) <- "some_class"

这对列表尤其有用,因为列表可以把其他变量组合成更复杂的变量。(还记得乐高类比吗:单个变量就像乐高积木,您可以用列表搭建出任意结构。)

在本练习中,您将查看一个用于存储国际象棋对局状态的对象,并重写它的类。

为便于理解练习,您需要了解一些国际象棋基础:

  • 一盘棋有两位玩家,称为 "white" 和 "black"。
  • 每位玩家有 6 种棋子:king、queen、bishops、knights、rooks 和 pawns。
  • 每个棋子的位置可用行("a" 到 "h")与列(1 到 8)来记录。

本练习是课程的一部分

R 中的 S3 与 R6 面向对象编程

查看课程

练习说明

工作空间中已预定义列表变量 chess

  • 先探索 chess,了解其结构。
  • chess 的类重写为 "chess_game"
  • 使用 is.list()文档)检查 chess 是否仍为列表。
  • 计算棋盘上剩余棋子的数量。
    • 一个可行的方法是用 unlist()文档)将对象拍平,然后返回其 length()文档)。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Explore the structure of chess
str(chess)

# Override the class of chess
___ <- ___

# Is chess still a list?
___

# How many pieces are left on the board?
___
编辑并运行代码