From: pillule <pillule@riseup.net>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: help-gnu-emacs@gnu.org
Subject: Re: EIEIO accessing class slots
Date: Fri, 11 Jun 2021 04:52:46 +0200 [thread overview]
Message-ID: <875yylnljs.fsf@riseup.net> (raw)
In-Reply-To: <jwvfsxp46lx.fsf-monnier+emacs@gnu.org>
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)
--
prev parent reply other threads:[~2021-06-11 2:52 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-10 15:20 EIEIO accessing class slots pillule
2021-06-10 19:38 ` pillule
2021-06-10 22:03 ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-06-10 22:02 ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-06-10 23:04 ` pillule
2021-06-11 0:04 ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-06-11 0:23 ` pillule
2021-06-11 0:59 ` pillule
2021-06-11 13:50 ` Stefan Monnier
2021-06-11 13:45 ` Stefan Monnier
2021-06-11 14:23 ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-06-11 14:29 ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-06-12 10:35 ` pillule
2021-06-11 2:52 ` pillule [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=875yylnljs.fsf@riseup.net \
--to=pillule@riseup.net \
--cc=help-gnu-emacs@gnu.org \
--cc=monnier@iro.umontreal.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.