help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: EIEIO accessing class slots


From: pillule
Subject: Re: EIEIO accessing class slots
Date: Fri, 11 Jun 2021 04:52:46 +0200

Stefan Monnier via Users list for the GNU Emacs text editor 
<help-gnu-emacs@gnu.org> writes:

>>>> How can I accede to the initarg of an eieio class?
>>> What do you mean exactly by that and why do you need that?
>> [description of your code]
>> This need adjustments but I hope you get the idea.
>
> Sadly, this describes your code (with reference to unexplained things
> like "the get-or-create of the object"), so no I don't understand what
> you're doing at all, and I don't know what those values are
> meant to hold, so I don't know what you mean to do.
>
> E.g. why do you do
>
>     (oref-default 'moirai-dired-side :display-alist)
>
> instead of
>
>     (oref-default 'moirai-dired-side 'display-alist)
>
> ?

part of the confusion comes that oref already quote the slot, quoting it again 
results ''display-alist after macro-expansion. Not very much my taste to put 
confusion between values and symbols.

The second part of the confusion is the EIEIO manual which show as exemple in 
"(eieio) Quick Start"

(defclass person () ; No superclasses
       ((name :initarg :name  ;; <<< a :keyword  as initarg !
              :initform ""
              :type string
              :custom string
              :documentation "The name of a person.")
        (birthday :initarg :birthday
                  :initform "Jan 1, 1970"
                  :custom string
                  :type string
                  :documentation "The person's birthday.")
        (phone :initarg :phone
               :initform ""
               :documentation "Phone number."))
       "A class for tracking people I know.")

It uses keywords as :initarg so I followed the template to create my own 
methods and ended up with keywords as :initarg (also why showcasing :initarg if 
it automatically set by defclass ?)

It is empathized again in "(eieio) Slot Options"


‘:initarg’
     A symbol that can be used in the argument list of the constructor
     to specify a value for this slot of the new instance being created.

     A good symbol to use for initarg is one that starts with a colon
     ‘:’.
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

     The slot specified like this:
            (myslot :initarg :myslot)
     could then be initialized to the number 1 like this:
            (myobject :myslot 1)





--



reply via email to

[Prev in Thread] Current Thread [Next in Thread]