...do not forget on method tags -- Pavel
2017-05-22 16:44 GMT+02:00 Pavel Krivanek <[email protected]>: > Nice. We will have troubles with slots because that will mix model and > real instances (and slot definitions can contain any Smalltalk code) > > -- Pavel > > 2017-05-22 9:25 GMT+02:00 Luc Fabresse <[email protected]>: > >> Hi, >> >> Following Pharo Days, I brainstormed about some possible class definition >> syntaxes. >> What I have in mind: >> >> "basic mechanics, only THIS one in the image!" >> ClassDefinition new >> superclass: Object; "optional. If not specified, Object by default ;-)" >> name: #A; "optional and create an anonymous class if not specified" >> instVars: 'a b c'; >> traits: {TEquality}; >> package: 'Plop'; >> createClass. " this message sent might be hidden by the browser when >> accepting" >> >> "---------------" >> "Some IDEAS (but I did not find one that I really like) of >> scripting/shorter syntaxes that must ALWAYS end up calling the above basic >> mechanics at the end:" >> >> Class fromDefinition: [ :def | >> def name: #sub; >> instVars: 'w r g'; >> superclass: Object ]. >> >> Object subclass "<-- returns a subclass of Object but the problem is >> that the new class is muted each time and the class definition is not >> explicit" >> name: #A; >> ivs: 'a b c'; >> traits: { TEquality }. >> >> { #superclass -> Object. >> #name -> #sub. >> #instVars -> 'a b c' } asClass. >> >> { Object asSuperclass. >> #sub asClassName. >> 'a b c' asInstVars. >> 'c' asClassVar } asClass. >> >> "litteral approach" >> #( name A >> superclass Object >> instVars #(a b c) >> instVar d >> ) asClass >> >> >> #Luc >> > >
