Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search

[REBOL] Re: Newcomer difficulties with Rebol

From: petr:krenzelok:seznam:cz at: 17-Dec-2007 10:55

> a: "12345" > > probe index? find a => 3 > > probe copy/part a 3 => "123" > > probe copy/part a find a "3" => "12" > > I expected 3 being the return value of -find a "3"- as it is the index of > the series returned by the fuction find but Rebol works differently > considering it the "end position" >
yes, maybe a bit confusing, but handy behavior. We are evaluating from left to right. So - what is first is copy/part function. And it either accept number of chars to copy, or it takes position you want to copy to. Your logic here is imo not rigth. You clearly stated, you want to copy/part a , starting at the head of 'a. To achieve what you want to achieve, you would have to reverse logic - " probe copy/part find a "3" 3" or use some other aproach. This behavior is handy especially when using change/part. You don't need to care, and the exact part is being replaced and string shifted for you.
> The fourth learning difficulty arised on string inside objects and functions > they are static and global. I must use COPY to have another issue of the > string. Instead I would expect to have it initialized each I declare a: > "mystring". For the same reason I must use COPY/DEEP to copy sub-blocks > inside block of data. >
Ah, ok. This is really a bit difficult category of problems for newcomers. Subobject sharing caused me many headaches, especially in View, when I directly accessed e.g. button border. It changed all button borders instead :-) The most difficult part of REBOL series operation is unbound strings/blocks! So many times I found out, that their values is shared/persistent, that to be safe I use copy when not sure of the result :-) I think that Core documentation tried to explain series concept nicely. What I would probably do is to create some gotchas category, describing exactly those small details, which might take you tens of minutest to debug ... Petr