跳转到内容

Rebol 编程/extract

来自维基教科书,开放书籍,开放世界
EXTRACT series width /index pos /default value /into output 

从系列中以固定间隔提取值。

EXTRACT 是一个函数值。

  • series -- (类型:系列)
  • width -- 每个条目的大小(跳过)(类型:整数)
  • /index -- 从偏移位置提取
    • pos -- 位置 (类型:任何)
  • /default -- 使用默认值而不是无
    • value -- 要使用的值(如果是函数,每次都会被调用)(类型:任何)
  • /into -- 将其插入到缓冲区中 (返回插入后的位置)
    • output -- 缓冲区系列 (已修改) (类型:系列)

(特殊属性)

[编辑 | 编辑源代码]
  • 捕获

源代码

[编辑 | 编辑源代码]
extract: func [
  {Extracts a value from a series at regular intervals.} 
  [catch] 
  series [series!] 
  width [integer!] "Size of each entry (the skip)" 
  /index "Extract from an offset position" 
  pos "The position" [number! logic! block!] 
  /default "Use a default value instead of none" 
  value {The value to use (will be called each time if a function)} 
  /into {Insert into a buffer instead (returns position after insert)} 
  output [series!] "The buffer series (modified)" 
  /local len val
][
  if zero? width [return any [output make series 0]] 
  len: either positive? width [
    divide length? series width
  ] [
    divide index? series negate width
  ] 
  unless index [pos: 1] 
  either block? pos [
    if empty? pos [return any [output make series 0]] 
    parse pos [some [number! | logic! | set pos skip (
          throw-error 'script 'expect-set reduce [[number! logic!] type? get/any 'pos]
        )]] 
    unless into [output: make series len * length? pos] 
    if all [not default any-string? output] [value: copy ""] 
    if binary? series [series: as-string series] 
    forskip series width [forall pos [
        if none? set/any 'val pick series pos/1 [set/any 'val value] 
        output: insert/only output get/any 'val
      ]]
  ] [
    unless into [output: make series len] 
    if all [not default any-string? output] [value: copy ""] 
    if binary? series [series: as-string series] 
    forskip series width [
      if none? set/any 'val pick series pos [set/any 'val value] 
      output: insert/only output get/any 'val
    ]
  ] 
  either into [output] [head output]
]
华夏公益教科书