Series "getters"



Existuje takové množství příkazů pro manipulaci s řadami (series)se, že jsem je rozdělil do dvou kapitol - jednu pro příkazy získávající informace z řad (getters) a druhou pro příkazy, které přímo mění řady (changers).

Příkazy "getters" pouze vracejí hodnoty, bez změny řad. Nicméně i tyto příkazy mohou měnit řady, pokud přiřadíme řadu k vratné hodnotě.

action! length?

Vrací velikost (délku) řady od aktuálního indexu ke konci.

>> a: [1 3 5 7 9 11 13 15 17]
== [1 3 5 7 9 11 13 15 17]

>> length? a
== 9

>> length? find a 13           ;see the command "find"
== 3                                   ;from "13" to the tail there are 3 elements

function! empty?

Vrací true , je-li řada prázdná, jinak vrací  false.

>> a: [3 4 5]
== [3 4 5]

>> empty? a
== false

>> b:[]
== []

>> empty? b
== true

action! pick

Vybere hodnotu z řady na pozici, dané druhým argumentem.

>> pick ["cat" "dog" "mouse" "fly"] 2
== "dog"

>> pick "delicious" 4
== #"i"

action! at

Vrací řadu od zadaného indexu.

>> at ["cat" "dog" "fox" "cow" "fly" "ant" "bee" ] 4
== ["cow" "fly" "ant" "bee"]

action! select a action! find

Oba příkazy vyhledají zadanou hodnotu v řadě. Hledání probíhá zleva doprava, není-li použito upřesnění  /reverse  nebo  /last.

Při nalezení shody:

  • select vrací následující element řady za shodou;


>> select ["cat" "dog" "fox" "cow" "fly" "ant" "bee" ] ["cow"]
== "fly"

  • find vrací celý zbytek řady od shody ke chvostu.


>> find ["cat" "dog" "fox" "cow" "fly" "ant" "bee" ] ["cow"] 
== ["cow" "fly" "ant" "bee"]

/part
Omezí délku prohledávané řady na daný počet elementů;  v zobrazení dole je   prohledávaná oblast zvýrazněna:


>>select/part ["cat" "dog" "fox" "cow" "fly" "ant" "bee" ] ["cow"]  3 
== none

>> select/part ["cat" "dog" "fox" "cow" "fly" "ant" "bee" ] ["fox"]   
== "cow"       ; why?!


>> find/part ["cat" "dog" "fox" "cow" "fly" "ant" "bee" ] ["cow"]  3
== none

>> find/part ["cat" "dog" "fox" "cow" "fly" "ant" "bee" ] ["cow"]  4
== ["cow" "fly" "ant" "bee"]

/only

Hledá pouze blok uvnitř prohledávané řady.

>> find/only ["cat" "dog" "fox" "cow" "fly" "ant" "bee" ] ["cow" "fly"]        
== none                          ;finds nothing

>> find/only ["cat" "dog" "fox" ["cow" "fly"] "ant" "bee" ] ["cow" "fly"]        
== [["cow" "fly"] "ant" "bee"]   ;finds the block

/case

Pokyn pro rozlišování malých a velkých písmen.

/skip  [řada skupin] [shoda] [délka skupiny]

Považuje řadu za sled skupin zadané délky. Požadovaná shoda se musí nalézat na prvním místě skupiny.

>> find/skip ["cat" "dog"  "fox" "dog"  "dog" "dog" "cow" "dog"  "fly" "dog"  "ant" "dog"  "bee" "dog"] ["dog"]  2 
== ["dog" "dog" "cow" "dog" "fly" "dog" "ant" "dog" "bee" "dog"]

Skupiny jsou označeny žlutě a hledaná shoda modře. Vrací zbytek bloku včetně shody.

/last

Vyhledá poslední shodu se zadaným elementem; vrátí zbytek řady.

>> find/last [33 11 22 44 11 12] 11
== [11 12]

/reverse

The same as /last , but from the current index that can be set, for example by the at command.

find/tail

Normálně vrací find výsledek včetně shodujícího se elementu. S upřesněním /tail se vrací zbytek řady za shodným elementem, podobně jako u  select.

>> find ["cat" "dog" "fox" "cow" "fly" "ant" "bee" ] "fly"
== ["fly" "ant" "bee"]

>> find/tail ["cat" "dog" "fox" "cow" "fly" "ant" "bee" ] "fly"
== ["ant" "bee"]

find/match

Upřesnění /match  porovnává klíč s počátkem řady. Případnou vracenou hodnotou je zbytek řady za shodou.

>> find/match ["cat" "dog" "fox" "cow" "fly" "ant" "bee"] "fly"
== none                                                 ;no match

>> find/match ["cat" "dog" "fox" "cow" "fly" "ant" "bee"] "cat"
== ["dog" "fox" "cow" "fly" "ant" "bee"]                ;match

function! last

Vrací poslední hodnotu řady.

>> last ["cat" "dog" "fox" "cow" "fly" "ant" "bee"]
== "bee"

function! extract

Extrahue hodnoty z řady v zadaném intervalu, vracejíc novou řadu.

>> extract [1 2 3 4 5 6 7 8 9] 3
== [1 4 7]

>> extract "abcdefghij" 2
== "acegi"

/index

Extrahuje hodnoty v zadaném intervalu od zadané pozice (indexem).

>> extract/index "abcdefghij" 2 4       ; interval index
== "dfhj"

/into

Připojí extrahované hodoty k zadané řadě (akumulátoru).

>> akum: []                           ;creates empty series
== []

>> extract/into "abcdefg" 2 akum
== [#"a" #"c" #"e" #"g"]

>> extract/into ["cat" "dog" "fox" "cow" "fly"] 2 akum
== [#"a" #"c" #"e" #"g" "cat" "fox" "fly"]

action! copy

Viz kapitola Kopírování.

native! union

Vrací spojení dvou řad. Duplikátní elementy jsou zařazeny pouze jednou.

>> union [3 4 5 6] [5 6 7 8]
== [3 4 5 6 7 8]

/case

Case-sensitive porovnávání

>> union/case [A a b c] [b c C]
== [A a b c C]

/skip                                                                

Považuje řady za sled skupin zadané délky. Porovnává se pouze první element každé skupiny. U duplicitních vstupů se zachovává záznam první řady:

>> union/skip [1 2 3 4 5 6 7 8] [1 8 5 1 2] 3                  
== [1 2 3 4 5 6 7 8]

>> union/skip [a b c c d e e f f] [a j k c y m e z z] 3
== [a b c c d e e f f]

>> union/skip [k b c c d e e f f] [a j k c y m e z z] 3
== [k b c c d e e f f a j k]

native! difference

Vypouští duplicitní výskyty elementů z obou řad.

>> difference [3 4 5 6] [5 6 7 8]
== [3 4 7 8]

/case

Case-sensitive porovnávání

/skip

Považuje řady za sled skupin zadané délky.

native! intersect

Vrací pouze duplicitní výskyty elementů:

>> intersect [3 4 5 6] [5 6 7 8]
== [5 6]

/case

Case-sensitive porovnávání

/skip

Považuje řady za sled skupin zadané délky

native! unique

Vypouští duplikáty:

>> unique [1 2 2 3 4 4 1 7 7]
== [1 2 3 4 7]

/skip

Považuje řady za sled skupin zadané délky

native! exclude

Vypouští zadané elementy z řady a vrací seznam neopakovaných elementů.

>> a: [1 2 3 4 5 6 7 8]
== [1 2 3 4 5 6 7 8]

>> exclude a [2 5 8]
== [1 3 4 6 7]

>> a
== [1 2 3 4 5 6 7 8]                 ; nemění původní hodnotu řady

>> exclude "my house is a very funny house" "aeiou"
== "my hsvrfn"

>> exclude [1 1 2 2 3 3 4 4 5 5 6 6] [2 4]
== [1 3 5 6]

/case

Case-sensitive porovnávání

/skip

Považuje řady za sled skupin zadané délky