📜  for in racket (1)

📅  最后修改于: 2023-12-03 15:00:49.930000             🧑  作者: Mango

Racket 中的 for 循环

在 Racket 中,for 循环是非常常用的语法结构之一。它提供了一个简单而高效的方式来遍历一个列表或序列,执行一些操作。在本文中,我们将讨论 for 循环在 Racket 中的使用方法。

基本语法

for 循环的基本语法如下所示:

(for ([variable init-value end-condition] ...)
  body ...)

其中,variable 表示循环索引变量的名称,init-value 表示起始值,end-condition 表示循环终止条件。body 表示执行的循环体语句,可以包含任何合法的 Racket 代码。

例如,下面的示例代码演示了如何使用 for 循环遍历一个列表并打印每个元素:

(define my-list '(1 2 3 4 5))
(for ([num my-list])
  (displayln num))

输出结果为:

1
2
3
4
5

在上面的代码中,我们使用了一个循环索引变量 num 来遍历 my-list 列表中的每个元素。displayln 函数用于打印每个元素的值。

控制循环流程

有时候我们需要在 for 循环中控制循环的流程,例如跳过某些元素或提前结束循环等。为此,Racket 提供了几个有用的关键字:

  • #:break:提前结束循环;
  • #:continue:跳过当前元素,直接执行下一个元素;
  • #:when condition:对每个元素执行条件判断,只有满足条件时才执行循环体语句。

下面的示例代码演示了如何使用这些关键字:

(define my-list '(1 2 3 4 5))
(for ([num my-list])
  (when (even? num)
    (continue))
  (when (> num 3)
    (break))
  (displayln num))

输出结果为:

1
3

在上面的代码中,我们使用 when 关键字对每个元素执行条件判断。当元素为偶数时,跳过当前元素,直接执行下一个元素;当元素大于 3 时,提前结束循环。

循环嵌套

在 Racket 中,我们可以使用嵌套的 for 循环来遍历深度嵌套的数据结构(例如列表的列表)。对于每一层循环,我们需要使用不同的循环索引变量。

下面的示例代码演示了如何使用嵌套的 for 循环来遍历一个二维列表:

(define my-list '((1 2 3) (4 5 6) (7 8 9)))
(for ([row my-list])
  (for ([num row])
    (display num)
    (display " "))
  (newline))

输出结果为:

1 2 3 
4 5 6 
7 8 9 

在上面的代码中,我们使用两个循环索引变量 rownum 分别遍历每个子列表和子列表中的元素。display 函数用于打印每个元素的值,newline 函数用于换行。

总结

在本文中,我们介绍了 Racket 中的 for 循环,包括基本语法、控制循环流程和循环嵌套等方面的内容。对于任何 Racket 程序员来说,for 循环都是必须掌握的基本语法之一。