1
0
Fork 0
cl-sites/guile.html_node/Introspection.html

96 lines
3.8 KiB
HTML
Raw Normal View History

2024-12-17 12:49:28 +01:00
<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This manual documents Guile version 3.0.10.
Copyright (C) 1996-1997, 2000-2005, 2009-2023 Free Software Foundation,
Inc.
Copyright (C) 2021 Maxime Devos
Copyright (C) 2024 Tomas Volf
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
copy of the license is included in the section entitled "GNU Free
Documentation License." -->
<title>Introspection (Guile Reference Manual)</title>
<meta name="description" content="Introspection (Guile Reference Manual)">
<meta name="keywords" content="Introspection (Guile Reference Manual)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content=".texi2any-real">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="index.html" rel="start" title="Top">
<link href="Concept-Index.html" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="GOOPS.html" rel="up" title="GOOPS">
<link href="GOOPS-Error-Handling.html" rel="next" title="GOOPS Error Handling">
<link href="Inheritance.html" rel="prev" title="Inheritance">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
span:hover a.copiable-link {visibility: visible}
ul.mark-bullet {list-style-type: disc}
-->
</style>
<link rel="stylesheet" type="text/css" href="https://www.gnu.org/software/gnulib/manual.css">
</head>
<body lang="en">
<div class="section-level-extent" id="Introspection">
<div class="nav-panel">
<p>
Next: <a href="GOOPS-Error-Handling.html" accesskey="n" rel="next">Error Handling</a>, Previous: <a href="Inheritance.html" accesskey="p" rel="prev">Inheritance</a>, Up: <a href="GOOPS.html" accesskey="u" rel="up">GOOPS</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h3 class="section" id="Introspection-1"><span>8.8 Introspection<a class="copiable-link" href="#Introspection-1"> &para;</a></span></h3>
<p><em class="dfn">Introspection</em>, or <em class="dfn">reflection</em>, means being able to obtain
information dynamically about GOOPS objects. It is perhaps best
illustrated by considering an object oriented language that does not
provide any introspection, namely C++.
</p>
<p>Nothing in C++ allows a running program to obtain answers to the following
types of question:
</p>
<ul class="itemize mark-bullet">
<li>What are the data members of this object or class?
</li><li>What classes does this class inherit from?
</li><li>Is this method call virtual or non-virtual?
</li><li>If I invoke <code class="code">Employee::adjustHoliday()</code>, what class contains the
<code class="code">adjustHoliday()</code> method that will be applied?
</li></ul>
<p>In C++, answers to such questions can only be determined by looking at
the source code, if you have access to it. GOOPS, on the other hand,
includes procedures that allow answers to these questions &mdash; or their
GOOPS equivalents &mdash; to be obtained dynamically, at run time.
</p>
<ul class="mini-toc">
<li><a href="Classes.html" accesskey="1">Classes</a></li>
<li><a href="Instances.html" accesskey="2">Instances</a></li>
<li><a href="Slots.html" accesskey="3">Slots</a></li>
<li><a href="Generic-Functions.html" accesskey="4">Generic Functions</a></li>
<li><a href="Accessing-Slots.html" accesskey="5">Accessing Slots</a></li>
</ul>
</div>
</body>
</html>