<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br>Ok, thanks, I think I am understanding.<br><br></div>I was trying to create a class to experiment but if I try to:<br><br>Object subclass: #TestClassWithSlots<br>    slots: { }<br>    classVariables: {  }<br>    package: 'Experiment-Slots'<br><br></div><div>Code is reversed to:<br><br>Object subclass: #TestClassWithSlots<br>    instanceVariableNames: ''<br>    classVariableNames: ''<br>    package: 'Experiment-Slots'<br><br></div>Even if I do:<br><br>Object subclass: #TestClassWithSlots<br>    slots: { #tests => BaseSlot } <br>    classVariables: {  }<br>    package: ''Experiment-Slots'<br><br></div><div>It reverts back to the instanceVariableNames version. Putting BooleanSlot avoids this reversion. I also tried to put RelationSlot just to see what happens and it entered in an infinite loop error.<br><br></div><div>All those things are errors? If so, where should I report?<br></div><div><br><br></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 6, 2019 at 10:46 AM Marcus Denker <<a href="mailto:marcus.denker@inria.fr" target="_blank">marcus.denker@inria.fr</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><br><div><br><blockquote type="cite"><div>On 6 Feb 2019, at 13:25, Vitor Medina Cruz <<a href="mailto:vitormcruz@gmail.com" target="_blank">vitormcruz@gmail.com</a>> wrote:</div><br class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-interchange-newline"><div><div dir="ltr"><div dir="ltr"><div dir="ltr">Thanks, I was looking for usages of InstanceVariableSlot.<br></div></div></div></div></blockquote><div><br></div><div>All instance variables are InstanceVariableSlots. </div><div><br></div><div>But to make it less verbose, we have a way to specify these without having to put the name. </div><div><br></div><div><br></div><div><div>Object subclass: #Point</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">     </span>slots: { #x. #y }</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">   </span>classVariables: {  }</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">       </span>package: 'Kernel-BasicObjects’</div><div><br></div><div>is the same as</div><div><br></div><div><div>Object subclass: #Point</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">        </span>slots: { #x => InstanceVariableSlot . #y => InstanceVariableSlot}</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">     </span>classVariables: {  }</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">       </span>package: 'Kernel-BasicObjects'</div></div></div><div><br></div><div>If you evaluate:</div><div><br></div><div>Point slotNamed: #x </div><div><br></div><div>you see that it returns a </div><div><br></div><div>    #x => InstanceVariableSlot</div><div><br></div><div>Slot instance.</div><div><br></div><div><div><div>(with all that: I sometime wonder if we should not get rid of the name “Slot” and just use the term “Variable”… because that is what they are…)</div><div><br></div></div></div><br><blockquote type="cite"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><div>In the case of SlotExampleMovie, #name and #year are of IntanceVariableSlot layout (this definition is correct? A slot is or has some Layout defined by the Slot class?)<br></div></div></div></div></blockquote><div><br></div><div>No, the class has a Layout. See subclasses of AbstractLayout. This reifies the magic number that is in the “format” ivar of Behaviors (third ivar of all class like objects).</div><div><br></div><div>In addition it makes class definition *explicitly* specify the layout.</div><div><br></div><div>So Array in ST 80 is something like:</div><div><br></div><div><div>ArrayedCollection variableSubclass: #Array</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">  </span>instanceVariableNames: ''</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">   </span>classVariableNames: ''</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">      </span>package: 'Collections-Sequenceable-Base'</div></div><div><br></div><div>so the layout chosen is hidden in the class creation method (variableSubclass…), while with the reified layouts, it explicit:</div><div><br></div><div>ArrayedCollection subclass: #Array</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">       </span>layout: VariableLayout</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">      </span>slots: {  }</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">        </span>classVariables: {  }</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">       </span>package: 'Collections-Sequenceable-Base’ </div><div><br></div><div>e.g. for CompiledMethod it makes clear that is a very special class:</div><div><br></div><div><div>CompiledCode subclass: #CompiledMethod</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">       </span>layout: CompiledMethodLayout</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">        </span>slots: {  }</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">        </span>classVariables: {  }</div><div><span class="m_2148083522437818835gmail-m_3131648808286210891gmail-m_-9201640985411244522Apple-tab-span" style="white-space:pre-wrap">       </span>package: 'Kernel-Methods’</div><div><br></div><div><br></div><div><br></div></div><blockquote type="cite"><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 6, 2019 at 10:14 AM Marcus Denker <<a href="mailto:marcus.denker@inria.fr" target="_blank">marcus.denker@inria.fr</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
> On 6 Feb 2019, at 12:41, Denis Kudriashov <<a href="mailto:dionisiydk@gmail.com" target="_blank">dionisiydk@gmail.com</a>> wrote:<br>
> <br>
> Would be nice to have a command in browser to show users of selected slot<br>
> <br>
<br>
Yes!<br>
<br>
        Marcus<br>
<br>
<br>
</blockquote></div>
</div></blockquote></div><br></div></blockquote></div></div></div>