[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)
--
- Re: EIEIO accessing class slots, (continued)
- Re: EIEIO accessing class slots,
pillule <=