1. [Phix Tutor] Sequence replace|splice|insert|remove all with `=` operator
- Posted by _tom (admin) Feb 16, 2018
- 1161 views
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