2017-10-19 179 views

回答

6
  • AT可以尋求在列表中的位置。
  • COPY將會從列表的最後一個位置複製,默認情況下
  • COPY的/PART細化可以讓你添加一個限制複製

傳遞一個整數/部分假設多少你要複製的東西:

>> list: [1 2 3 4 5 6 7 8 9] 

>> copy/part (at list 3) 5 
== [3 4 5 6 7] 

如果你提供一系列位置是結束,那麼它會複製高達這一點,所以如果你的範圍意味着包容性,你必須通過它。

>> copy/part (at list 3) (next at list 7) 
== [3 4 5 6 7] 

對於範圍方言有一些建議,我找不到任何副手。簡單的代碼來出主意:

range: func [list [series!] spec [block!] /local start end] [ 
    if not parse spec [ 
     set start integer! '.. set end integer! 
    ][ 
     do make error! "Bad range spec, expected e.g. [3 .. 7]" 
    ] 
    copy/part (at list start) (next at list end) 
] 

>> list: [1 2 3 4 5 6 7 8 9] 

>> range list [3 .. 7] 
== [3 4 5 6 7] 
+0

哇什麼答案;) – user310291

+0

在列表n **中不需要括號** – sqlab

3
>> list: [1 2 3 4 5 6 7 8 9] 
== [1 2 3 4 5 6 7 8 9] 
>> copy/part skip list 2 5 
== [3 4 5 6 7] 

所以,你可以跳到列表中的正確位置,然後儘可能多的連續的成員,因爲你需要複製。

如果你想要一個等價的函數,你可以自己寫。