←
PDF 288 / 520 Intermediate Steps
→
English · PDF 288
Original PDF page 288
中文 · PDF 288

小兔子 Foo Foo 蹦蹦跳跳穿过森林 抓起田鼠 在它们头上敲一下

这是一首流行的儿童诗,通常配有手部动作。

我们先定义一个对象来表示小兔子 Foo Foo:

foo_foo <- little_bunny()

然后为每个关键动词定义一个函数:hop()、scoop() 和 bop()。使用这个对象和这些动词,我们(至少)可以用四种方式在代码中重述这个故事:

  • 将每个中间步骤保存为新对象。
  • 多次覆盖原始对象。
  • 组合函数。
  • 使用管道。

我们将逐一介绍每种方法,展示代码并讨论其优缺点。

中间步骤

最简单的方法是将每个步骤保存为新对象:

foo_foo_1 <- hop(foo_foo, through = forest) foo_foo_2 <- scoop(foo_foo_1, up = field_mice) foo_foo_3 <- bop(foo_foo_2, on = head)

这种形式的主要缺点是它迫使你为每个中间元素命名。如果有自然的名称,这是个好主意,你应该这样做。但很多时候,就像这个例子一样,并没有自然的名称,你只能添加数字后缀来使名称唯一。这会导致两个问题:

  • 代码被不重要的名称弄得杂乱不堪。
  • 你必须小心地在每一行递增后缀。

每当我写这样的代码时,总会在某一行用错数字,然后花 10 分钟挠头,试图弄清楚代码出了什么问题。