用红色语言创建一系列数字

rns*_*nso 1 list rebol red

我有一些简单的问题,因此我将它们放在一起:

  1. 创建一系列数字的最佳方法是什么?下面的工作,但是有一种更简单的方法,如1:10在某些语言中可用?

    myseries: []

    repeat i 10 [append myseries i]

    print myseries

(1a.为什么上面的代码没有在这个页面上制作通常的代码块?)

  1. 同样,创建一系列10个元素的最佳方法是什么,所有元素都初始化为0或""?我是否也必须在那里使用repeat i 10loop 10连续append使用最初空白的系列?

  2. 另外,我应该在最初创建系列时指定以下代码中的元素数量吗?不这样做的缺点是什么?

    myseries:制作块!10

谢谢你的帮助.

dra*_*tun 6

1)我的偏好是在这里使用COLLECT:

myseries: collect [repeat i 10 [keep i]]
Run Code Online (Sandbox Code Playgroud)

2)参见ARRAY功能:

>> array/initial 10 0
== [0 0 0 0 0 0 0 0 0 0]
Run Code Online (Sandbox Code Playgroud)

你也可以传递一个匿名函数:

>> i: 0 array/initial 10 does [i: i + 1]
== [1 2 3 4 5 6 7 8 9 10] 
Run Code Online (Sandbox Code Playgroud)

3)一般来说,使用myseries: make block! 10(如果块的大小未知,则为0 )是一种好习惯,以避免不必要的陷阱!见要复制或不复制,这是个问题&是REBOL纯函数式语言?