Well, I don't think you'd programmatically create a new class, because your 
instance has to have been an instance of a class that already exists. Or else 
you would not have an instance to begin with. 

Perhaps, you want a way to programatically reproduce an instance you've been 
working with by hand in a Workspace. You have the instance. It's just right. 
You want it to be programmatically reproducible at will. I'd use 
Object>>storeString. 

x := (HelloWorld new) color: 'Black'.

I've created a instance with an instvar. I send it storeString:
        
x storeString 

and I get: 

'(HelloWorld basicNew instVarAt: 1 put: ''Black''; yourself)'

It's a bit crufty to me. I remove the first and last quote and parentheses. The 
double single quotes aren't great, so I remove them too. 

HelloWorld basicNew instVarAt: 1 put: 'Black'; yourself

Print it, and get: 

a HelloWorld 

I'm not sure why it comes in some extra syntax. 
That's my best guess at an answer to your question. YMMV. 


Chris 




On 2012-06-09, at 5:04 PM, Erich Groat wrote:

> 
> Hi all,
> 
> I was wondering if there are any built-in facilities for taking a particular 
> instance a class X, call it anX, and creating from it a class method that 
> returns an identical instance of anX for future use.
> 
> For example, say I'm futzing around in a workspace with an instance of a 
> class called InteractiveWindowShape, tweaking things so that I have a nice 
> window with all the colors and proportions and buttons I want, perhaps using 
> Morphs to create the thing dynamically (so it's some kind of Morph object). 
> In the course of this I get an instance of anInteractiveWindowShape that I am 
> satisfied with, all the instance variables set just right. Let's call this 
> object | idealShape |. It's just sitting there, rather vulnerably, in a 
> workspace, the result of my using various screen tools over the last half 
> hour. Now, I don't just want to save this object: I want to be able to create 
> an identical one whenever I like. So what I want is a Class method, 
> InteractiveWindowShapes class>>newIdealShape, that creates an instance 
> exactly like idealShape.
> 
> Is there a message I can send to this instance idealShape that would return a 
> block of code that would act as a class method, which I could then call 
> newIdealShape, and which would return an identical instance?
> 
> I suspect such a general method might not exist, due to the potential hazards 
> surrounding the deep copy problem; I also suspect I may not be imagining the 
> best sort of solution to my problem. Is there a strategy for this?
> 
> Thanks all!
> 
> Erich
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://lists.squeakfoundation.org/mailman/listinfo/beginners

_______________________________________________
Beginners mailing list
[email protected]
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to