[REBOL] Re: Block member as a mutable variable (question)
From: joel:neely:fedex at: 11-Sep-2001 1:26
Hi, Tim,
Tim Johnson wrote:
> I have a nested block as such:
> file-block: [[0 ["recno" "integer"] ["name" "string"]
> ["country" "string"] ["speed" "integer"] ["range" "integer"]]]
> I set a word to the numeric value like this:
> >> test: first first file-block
> == 0
> Then I increment test:
> >> test: test + 1
> == 1
> <sigh>but</sigh> I don't get the results I want.
> >> file-block
> == [[0 ["recno" "integer"] ["name" "string"] ["country" "string"]
> ["speed" "integer"] ["range" "integer"]]]
> Alas! I was hoping that I would see a '1 as first first 'file-block
> What have I left out here?
>
Carl Read has already hit the key issue. REBOL knows about
references
only in connection with certain data types (e.g.
any block-like type). If you want a reference to a "place"
where an integer is held, you'll have to keep up with that
place explicitly.
That said, another couple of ways to do what I think you want
would be:
>> file-block: [[0 ["recno" "integer"] ["name" "string"]
[ ["country" "string"] ["speed" "integer"] ["range"
integer
]]]
== [[0 ["recno" "integer"] ["name" "string"]
["country" "string"] ["speed" "integer"] ["range"
integer
]]]
>> file-block/1/1: file-block/1/1 + 1
== [1 ["recno" "integer"] ["name" "string"]
["country" "string"] ["speed" "integer"] ["range" "integer"]]
>> file-block
== [[1 ["recno" "integer"] ["name" "string"]
["country" "string"] ["speed" "integer"] ["range"
integer
]]]
>> blk1: first file-block
== [1 ["recno" "integer"] ["name" "string"]
["country" "string"] ["speed" "integer"] ["range" "integer"]]
>> blk1/1: 1 + first blk1
== [2 ["recno" "integer"] ["name" "string"]
["country" "string"] ["speed" "integer"] ["range" "integer"]]
>> file-block
== [[2 ["recno" "integer"] ["name" "string"]
["country" "string"] ["speed" "integer"] ["range"
integer
]]]
That is, access the "place" where the integer lives either
in terms of its entire path relative to FILE-BLOCK, or make
a reference to the smallest block containing that integer
and refer to the "place" in *that* container.
HTH!
-jn-
--
------------------------------------------------------------
Programming languages: compact, powerful, simple ...
Pick any two!
joel'dot'neely'at'fedex'dot'com