Also when I use save/all %db.txt db
when I view the first bit of the db.txt file..
Rebol
.. #[hash!["user1" "pred1" "val1" "user2" "pred2"
Red
.. make hash! ["user1" "pred1" "val1" "user2"
mold/all
to see what is the string result used by save/all
.
I find myselft using really often the the /skip
refinement with select. Having a block like the following (or any one treated as record)
myblock: [
key1 value1 value2 value3
key2 value1 value2 value3
key3 value1 value2 value3
key4 value1 value2 value3
key5 value1 value2 value3
]
Select/skip
can't select anything other than the the first column: value1, which is quite limiting.
I see useful removing this limit adding an additional /pos
(or /offset
) integer refinement to select
so instead of the first value, any other could be selected! Without /skip
the pos
/offset
refinement should return the nth value after the key.
>> my_func: function [params [block!]][foreach x params [print x]]
== func [params [block!] /local x][foreach x params [print x]]
>> ? my_func
USAGE:
MY_FUNC params
DESCRIPTION:
MY_FUNC is a function! value.
ARGUMENTS:
params [block!]
>> my_func ["one" "two" "three"]
one
two
three
>>
>> copy/part find/skip myblock [key2 value1] 4 4
== [
key2 value1 value2 value3
]
>> third find/skip myblock [key2 value1] 4
== value2
mydata: make hash! [
key1 value11 value12 value13
key2 value21 value22 value23
key3 value31 value32 value33
key4 value41 value42 value43
key5 value51 value52 value53
]
myselect: func [data key len pos][
pick find/skip data key len pos
]
myselect mydata 'key1 4 1
;== key1
myselect mydata 'key1 4 3
;== value12
myselect mydata 'key3 4 2
;== value31
myselect mydata 'key5 4 4
;== value53