>>>>>>>>>>>>>>>>>> Ursprüngliche Nachricht <<<<<<<<<<<<<<<<<<

Am 22.02.01, 23:32:53, schrieb "GS Jones" <[EMAIL PROTECTED]> zum 
Thema [REBOL] Re: Object "Serialization":


> > > > In a separate thread, a question was asked about serialization of
> > > > objects by Sharriff Aina.  I had a similar question in mind and
> was
> > > > hoping for an answer.  Since the thread had gotten a bit off
> topic,
> > I'm
> > > > reposting essentially the same question in this separate thread.
> > > >
> > > > To date, when I want to save an object, I've been using 'save.
> Then
> > > > when I need the object back, I use 'read and then 'do the object.
> > > >
> > > > For example:
> > > >
> > > > data: make object! [
> > > >     name: "Joe"
> > > > ]
> > > >
> > > > save %my-object.r data
> > > >
> > > > ;... later i need the object ...
> > > > data: read %my-object.r
> > > > data: do data
> > > > print data/name
> > >
> > > use 'load instead of 'read? Then you don't need to 'do the 'data ...
> > > -pekr-
> >
> > Thanks, that is a good point!
> > Scott

> Actually, when I tried it, simply using 'load did not re-initialize 
the
> object (unless I am missing some additional subtle point).  I played
> with several additional variations, with the same conclusions.  So I
> guess the way I've been doing it will have to be good enough.  It 
still
> seems as though there should be a more seemless and coherent way to
> serialize the object.

data: do %my-object.r

before that you have like
>> a: [make object! []]                                                  
       == [make object! []]
>> a/1
== make
>> a/2
== object!   
So load gives »source«, do »compiles« it.
Note 'save of strings has some bugs before last /core-experimental,
specially with »{». do not:
>> mold "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{"
== {{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{}}
>> load mold 
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{"
** Syntax Error: Invalid string -- 
{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{}.
** Where: (line 1) 
{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{}         
                                                                      
because you have to balance »{» or escape it, and there is no escaped 
»{» in old rebols.

/core 2.4.40 does it ok:
>> mold "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{"
== 
{^{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa^^^{^}}  
  

also
>> mold %""
== "%"
>> load mold %""
** Syntax Error: Invalid file -- %
** Near: (line 1) %                

and pathes have problems
>> a: first [this/that]
== this/that
>> mold a
** Script Error: this has no value
** Near: mold a
because they get evaluatet by mold.
Don't know if someone want to save pathes?

Then, 'save  is similar to copy/deep, so if you have two references to 
the same object,
there are two seperate objects after 'do .
And of course if you rely on contexts (hand-made bind), this will not 
save correctly.

Knowing this, 'save / 'do is very handy, don't know of a better way.
(hope i have mentioned all?)

But, some while ago someone said he has written a serialisation which 
handles some of this problems                                          
                                                                      
and will post it if someone asks?

Volker
    
> Thanks for your attention, pekr.
> --Scott

> --
> To unsubscribe from this list, please send an email to
> [EMAIL PROTECTED] with "unsubscribe" in the
> subject, without the quotes.



-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to