在 Rebol3 中用自己的索引填充数组的有效方法
Efficient way to fill an array with its own indices in Rebol3
用自己的索引填充数组(给定的可能是动态大小)的简洁的一行代码是什么?
我正在尝试这个:
data: copy {}
repeat tilenum totaltiles [ append data rejoin [tilenum " "] ]
...然后希望将其转换为数组,但我认为必须有更 Rebolish 的方式来做这样的事情。
我的最终目标实际上是随机化数组内容的顺序,我认为这将是 random myarrayhere
的输出,但也许甚至有一种方法可以一次性完成所有这些?
如果你想要随机数组(块!)为什么不首先从块而不是字符串开始?
>> random array/initial length: 10 does [-- length]
== [3 10 7 9 2 5 8 6 1 4]
这是向您展示更多 Rebol 技巧的另一个选项。 collect
和 keep
在此设置中非常酷。
random collect [ repeat tilenum 10 [ keep tilenum ] ]
我更新了我的第一个答案,按照@rebolek 的建议使用 repeat
,因为我同意 for
语法不完美。
如果您想要真正的随机数并且不介意重复数字的风险,可以使用 loop
构造
更简洁的选项
collect [ loop 10 [ keep random 100 ] ]
用自己的索引填充数组(给定的可能是动态大小)的简洁的一行代码是什么?
我正在尝试这个:
data: copy {}
repeat tilenum totaltiles [ append data rejoin [tilenum " "] ]
...然后希望将其转换为数组,但我认为必须有更 Rebolish 的方式来做这样的事情。
我的最终目标实际上是随机化数组内容的顺序,我认为这将是 random myarrayhere
的输出,但也许甚至有一种方法可以一次性完成所有这些?
如果你想要随机数组(块!)为什么不首先从块而不是字符串开始?
>> random array/initial length: 10 does [-- length]
== [3 10 7 9 2 5 8 6 1 4]
这是向您展示更多 Rebol 技巧的另一个选项。 collect
和 keep
在此设置中非常酷。
random collect [ repeat tilenum 10 [ keep tilenum ] ]
我更新了我的第一个答案,按照@rebolek 的建议使用 repeat
,因为我同意 for
语法不完美。
如果您想要真正的随机数并且不介意重复数字的风险,可以使用 loop
构造
collect [ loop 10 [ keep random 100 ] ]