1. [Phix Tutor] Sequence replace|splice|insert|remove all with `=` operator

Using OE you need act on a slice with another slice of equal length. For other actions use the splice( and insert( functions.

The Phix assignment operator = lets you replace|splice|insert|remove values in a sequence.

It helps if you remember that s[1] is an "item," but s[1..1] is a "slice," and s[1..0] is a "null."

Phix code follows:

? "replace with atom" sequence s 
 
s = {1,2,3,4,5,6} 
s[1..1] = 9 
? s 
--> {9,2,3,4,5,6} 
 
s = {1,2,3,4,5,6} 
s[1..$] = 9 
? s 
--> {9,9,9,9,9,9} 
 
s = {1,2,3,4,5,6} 
s[1..0] = 9 
? s 
--> {1,2,3,4,5,6} 
 
? "replace an item"  sequence s 
 
s = {1,2,3,4,5,6} 
s[1] = 9 
? s 
--> {9,2,3,4,5,6} 
 
 
s = {1,2,3,4,5,6} 
s[1] = {9} 
? s 
--> {{9},2,3,4,5,6} 
 
? "splice at splice" sequence s 
 
s = {1,2,3,4,5,6} 
s[1..1] = {9} 
? s 
--> {9,2,3,4,5,6} 
 
s = {1,2,3,4,5,6} 
s[1..1] = {9,9} 
? s 
--> {9,9,2,3,4,5,6} 
 
? "splice across splices" sequence s 
 
s = {1,2,3,4,5,6} 
s[1..3] = {9} 
? s 
--> {9,4,5,6} 
 
s = {1,2,3,4,5,6} 
s[1..$] = {9} 
? s 
--> {9} 
 
? "insert before item" sequence s 
 
s = {1,2,3,4,5,6} 
s[1..0] = {9,9} 
? s 
--> {9,9,1,2,3,4,5,6} 
 
s = {1,2,3,4,5,6} 
s[2..1] = {9,9} 
? s 
--> {1,9,9,2,3,4,5,6} 
 
s = {1,2,3,4,5,6} 
s[$+1..-1] = {9,9} 
? s 
--> {1,2,3,4,5,6,9,9} 
 
? "remove slice" sequence s 
 
s = {1,2,3,4,5,6} 
s[1..1] = {} 
? s 
--> {2,3,4,5,6} 
 
s = {1,2,3,4,5,6} 
s[3..4] = {} 
? s 
--> {1,2,5,6} 
 

_tom

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu