最优雅的方法是通过跳过每2个元素来提取块

use*_*291 0 rebol red

让我说我有

block: [a 1 b 2 c 3]
Run Code Online (Sandbox Code Playgroud)

我想要

[1 2 3]
Run Code Online (Sandbox Code Playgroud)

像这样的东西是笨重的,它不起作用,因为我使用单词类型(我想用单词而不是字符串):

  block: [a 1 b 2 c 3]
  block2: []

  counter: -1
  foreach 'element block [
    counter: negate counter
    if counter append block2 element
  ]
Run Code Online (Sandbox Code Playgroud)

rgc*_*ris 6

EXTRACT功能应该适合这里的账单:

>> extract/index [a 1 b 2 c 3] 2 2
== [1 2 3]
Run Code Online (Sandbox Code Playgroud)

它对于这种类型的东西来说相当通用.

>> help extract
USAGE:
     EXTRACT series width

DESCRIPTION: 
     Extracts a value from a series at regular intervals. 
     EXTRACT is a function! value.

ARGUMENTS:
     series       [series!] 
     width        [integer!] "Size of each entry (the skip)".

REFINEMENTS:
     /index       => Extract from an offset position.
        pos          [integer!] "The position".
     /into        => Provide an output series instead of creating a new one.
        output       [series!] "Output series".
Run Code Online (Sandbox Code Playgroud)