OSDN Git Service

e336de21fd05f23d5cf5423a6ca627e25186f021
[ring-lang-081/ring.git] / docs / build / html / declarative.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6   <head>
7     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8     
9     <title>入れ子構造の宣言型プログラミング &mdash; プログラミング言語 Ring 1.12 取扱説明書</title>
10     
11     <link rel="stylesheet" href="_static/bootstrap-astropy.css" type="text/css" />
12     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
13     
14     <script type="text/javascript">
15       var DOCUMENTATION_OPTIONS = {
16         URL_ROOT:    './',
17         VERSION:     '1.12',
18         COLLAPSE_INDEX: false,
19         FILE_SUFFIX: '.html',
20         HAS_SOURCE:  true
21       };
22     </script>
23     <script type="text/javascript" src="_static/jquery.js"></script>
24     <script type="text/javascript" src="_static/underscore.js"></script>
25     <script type="text/javascript" src="_static/doctools.js"></script>
26     <script type="text/javascript" src="_static/translations.js"></script>
27     <link rel="top" title="プログラミング言語 Ring 1.12 取扱説明書" href="index.html" />
28     <link rel="next" title="自然言語プログラミング" href="natural.html" />
29     <link rel="prev" title="Stdlib クラス" href="stdlibclasses.html" />
30     <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,600' rel='stylesheet' type='text/css'/>
31
32   </head>
33   <body role="document">
34 <div class="topbar">
35   <a class="brand" title="Documentation Home" href="index.html"><span id="logotext1">&#x1f369;Ring</span><span id="logotext2"> 1.12</span><span id="logotext3">:docs</span></a>
36   <ul>
37     
38     <li><a href="http://ring-lang.sourceforge.net/news.html">News</a></li>
39     <li><a href="http://ring-lang.sourceforge.net/download.html">Download</a></li>
40     <li><a href="https://groups.google.com/forum/#!forum/ring-lang">Get Help</a></li>
41     <li><a href="https://github.com/ring-lang/ring">Contribute</a></li>
42     <li><a href="http://ring-lang.sourceforge.net/resources.html">Resources</a></li>
43     <li><a href="http://ring-lang.sourceforge.net/team.html">Team</a></li>
44     
45     <li><a title="Ring Homepage" href="http://ring-lang.net/">Website</a></li>
46     <li><a title="総合索引" href="genindex.html">Index</a></li>
47     <li>
48       
49       
50 <form action="search.html" method="get">
51   <input type="text" name="q" placeholder="Search" />
52   <input type="hidden" name="check_keywords" value="yes" />
53   <input type="hidden" name="area" value="default" />
54 </form>
55       
56     </li>
57   </ul>
58 </div>
59
60 <div class="related">
61     <h3>ナビゲーション</h3>
62     <ul>
63       <li class="right">
64         <a href="natural.html" title="自然言語プログラミング">
65           next &raquo;
66         </a>
67       </li>
68       <li class="right">
69         <a href="stdlibclasses.html" title="Stdlib クラス">
70           &laquo; previous
71         </a>
72          |
73       </li>
74       <li>
75         <a href="index.html">プログラミング言語 Ring 1.12 取扱説明書</a>
76          &raquo;
77       </li>
78       
79       <li>入れ子構造の宣言型プログラミング</li> 
80     </ul>
81 </div>
82   
83
84     <div class="document">
85       <div class="documentwrapper">
86         <div class="bodywrapper">
87           <div class="body" role="main">
88             
89   <div class="section" id="index-0">
90 <span id="id1"></span><h1>入れ子構造の宣言型プログラミング<a class="headerlink" href="#index-0" title="このヘッドラインへのパーマリンク">¶</a></h1>
91 <p>オブジェクト指向による入れ子構造の宣言型プログラミング環境の構築方法を学びます。</p>
92 <ul class="simple">
93 <li>リストへオブジェクトを作成するには</li>
94 <li>コンポジションと参照によりオブジェクトとリストを返すには</li>
95 <li>オブジェクトのアクセス完了後にコードを実行するには</li>
96 <li>オブジェクト指向による宣言型プログラミング</li>
97 </ul>
98 <div class="section" id="index-1">
99 <span id="id2"></span><h2>リストへオブジェクトを作成するには<a class="headerlink" href="#index-1" title="このヘッドラインへのパーマリンク">¶</a></h2>
100 <p>リストの定義時にリストへオブジェクトを作成できます。</p>
101 <p>Add() 関数、または + 演算子により、必要なときにオブジェクトをリストへ追加できます。</p>
102 <p>用例:</p>
103 <div class="highlight-ring"><div class="highlight"><pre><span class="n">alist</span> <span class="o">=</span> <span class="o">[</span><span class="k">new</span> <span class="n">point</span><span class="p">,</span> <span class="k">new</span> <span class="n">point</span><span class="p">,</span> <span class="k">new</span> <span class="n">point</span><span class="o">]</span>       <span class="c"># # オブジェクトが三つあるリストを作成します。</span>
104
105 <span class="n">alist</span> <span class="o">+</span> <span class="o">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="o">]</span>                                 <span class="c"># 別の項目をリストへ追加します。</span>
106
107 <span class="k">see</span> <span class="s">&quot;Item 4 is a list contains 3 items&quot;</span> <span class="o">+</span> <span class="n">nl</span>
108 <span class="k">see</span> <span class="n">alist</span><span class="o">[</span><span class="mi">4</span><span class="o">]</span>
109
110 <span class="n">add</span><span class="p">(</span><span class="n">alist</span> <span class="p">,</span> <span class="k">new</span> <span class="n">point</span><span class="p">)</span>
111 <span class="n">alist</span> <span class="o">+</span> <span class="k">new</span> <span class="n">point</span>
112
113 <span class="n">alist</span><span class="o">[</span><span class="mi">5</span><span class="o">]</span> <span class="p">{</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">100</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">200</span> <span class="n">z</span> <span class="o">=</span> <span class="mi">300</span> <span class="p">}</span>
114 <span class="n">alist</span><span class="o">[</span><span class="mi">6</span><span class="o">]</span> <span class="p">{</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">50</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">150</span> <span class="n">z</span> <span class="o">=</span> <span class="mi">250</span> <span class="p">}</span>
115
116 <span class="k">see</span> <span class="s">&quot;Object inside item 5&quot;</span> <span class="o">+</span> <span class="n">nl</span>
117 <span class="k">see</span> <span class="n">alist</span><span class="o">[</span><span class="mi">5</span><span class="o">]</span>
118 <span class="k">see</span> <span class="s">&quot;Object inside item 6&quot;</span> <span class="o">+</span> <span class="n">nl</span>
119 <span class="k">see</span> <span class="n">alist</span><span class="o">[</span><span class="mi">6</span><span class="o">]</span>
120
121 <span class="k">class</span> <span class="n">point</span> <span class="n">x</span> <span class="n">y</span> <span class="n">z</span>
122 </pre></div>
123 </div>
124 <p>実行結果:</p>
125 <div class="highlight-ring"><div class="highlight"><pre><span class="n">Item</span> <span class="mi">4</span> <span class="n">is</span> <span class="n">a</span> <span class="kt">list</span> <span class="n">contains</span> <span class="mi">3</span> <span class="n">items</span>
126 <span class="mi">1</span>
127 <span class="mi">2</span>
128 <span class="mi">3</span>
129 <span class="n">Object</span> <span class="n">inside</span> <span class="n">item</span> <span class="mi">5</span>
130 <span class="n">x</span><span class="p">:</span> <span class="mf">100.000000</span>
131 <span class="n">y</span><span class="p">:</span> <span class="mf">200.000000</span>
132 <span class="n">z</span><span class="p">:</span> <span class="mf">300.000000</span>
133 <span class="n">Object</span> <span class="n">inside</span> <span class="n">item</span> <span class="mi">6</span>
134 <span class="n">x</span><span class="p">:</span> <span class="mf">50.000000</span>
135 <span class="n">y</span><span class="p">:</span> <span class="mf">150.000000</span>
136 <span class="n">z</span><span class="p">:</span> <span class="mf">250.000000</span>
137 </pre></div>
138 </div>
139 </div>
140 <div class="section" id="index-2">
141 <span id="id3"></span><h2>コンポジションと参照によりオブジェクトとリストを返すには<a class="headerlink" href="#index-2" title="このヘッドラインへのパーマリンク">¶</a></h2>
142 <p>コンポジションの使用とクラス属性のオブジェクトがある場合、オブジェクトの返値は参照で返します。</p>
143 <p>呼び出し元で代入演算子を使う場合は、オブジェクトのコピーを作成します。</p>
144 <p>呼び出し元で代入演算子を使わない場合は、参照で返されたオブジェクトへ直接アクセスできます。</p>
145 <p>また、属性がリスト (オブジェクトではありません) でも同じ処理が適用されます。</p>
146 <div class="admonition note">
147 <p class="first admonition-title">注釈</p>
148 <p class="last">オブジェクト、およびリストは同じ規則で処理します。
149 関数へ渡すときは、参照渡しになります。
150 関数から返すときは、参照で返されたオブジェクト属性を除き値返しになります。</p>
151 </div>
152 <p>用例:</p>
153 <div class="highlight-ring"><div class="highlight"><pre><span class="n">o1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Container</span>
154 <span class="n">myobj</span> <span class="o">=</span> <span class="n">o1</span><span class="p">.</span><span class="n">addobj</span><span class="p">()</span>     <span class="c"># 別のコピーを代入で作成します。</span>
155 <span class="n">myobj</span><span class="p">.</span><span class="n">x</span> <span class="o">=</span> <span class="mi">100</span>
156 <span class="n">myobj</span><span class="p">.</span><span class="n">y</span> <span class="o">=</span> <span class="mi">200</span>
157 <span class="n">myobj</span><span class="p">.</span><span class="n">z</span> <span class="o">=</span> <span class="mi">300</span>
158 <span class="k">see</span> <span class="n">o1</span><span class="p">.</span><span class="n">aobjs</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span>         <span class="c"># コンテナにあるオブジェクトを表示します。</span>
159 <span class="k">see</span> <span class="n">myobj</span>               <span class="c"># コピーの表示</span>
160
161 <span class="k">Class</span> <span class="n">Container</span>
162         <span class="n">aObjs</span> <span class="o">=</span> <span class="o">[]</span>
163         <span class="k">func</span> <span class="n">addobj</span>
164                 <span class="n">aobjs</span> <span class="o">+</span> <span class="k">new</span> <span class="n">point</span>
165                 <span class="k">return</span> <span class="n">aobjs</span><span class="o">[</span><span class="n">len</span><span class="p">(</span><span class="n">aobjs</span><span class="p">)</span><span class="o">]</span>        <span class="c"># オブジェクトを参照で返します。</span>
166
167 <span class="k">Class</span> <span class="n">point</span>
168         <span class="n">x</span>  <span class="o">=</span> <span class="mi">10</span>
169         <span class="n">y</span>  <span class="o">=</span> <span class="mi">20</span>
170         <span class="n">z</span>  <span class="o">=</span> <span class="mi">30</span>
171 </pre></div>
172 </div>
173 <p>実行結果:</p>
174 <div class="highlight-ring"><div class="highlight"><pre><span class="n">x</span><span class="p">:</span> <span class="mf">10.000000</span>
175 <span class="n">y</span><span class="p">:</span> <span class="mf">20.000000</span>
176 <span class="n">z</span><span class="p">:</span> <span class="mf">30.000000</span>
177 <span class="n">x</span><span class="p">:</span> <span class="mf">100.000000</span>
178 <span class="n">y</span><span class="p">:</span> <span class="mf">200.000000</span>
179 <span class="n">z</span><span class="p">:</span> <span class="mf">300.000000</span>
180 </pre></div>
181 </div>
182 <p>用例②:</p>
183 <div class="highlight-ring"><div class="highlight"><pre><span class="k">func</span> <span class="n">main</span>
184         <span class="n">o1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">screen</span>  <span class="p">{</span>
185                 <span class="n">content</span><span class="o">[</span><span class="n">point</span><span class="p">()</span><span class="o">]</span> <span class="p">{</span>
186                         <span class="n">x</span> <span class="o">=</span> <span class="mi">100</span>
187                         <span class="n">y</span> <span class="o">=</span> <span class="mi">200</span>
188                         <span class="n">z</span> <span class="o">=</span> <span class="mi">300</span>
189                 <span class="p">}</span>
190                 <span class="n">content</span><span class="o">[</span><span class="n">point</span><span class="p">()</span><span class="o">]</span> <span class="p">{</span>
191                         <span class="n">x</span> <span class="o">=</span> <span class="mi">50</span>
192                         <span class="n">y</span> <span class="o">=</span> <span class="mi">150</span>
193                         <span class="n">z</span> <span class="o">=</span> <span class="mi">250</span>
194                 <span class="p">}</span>
195         <span class="p">}</span>
196         <span class="k">see</span> <span class="n">o1</span><span class="p">.</span><span class="n">content</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span>
197         <span class="k">see</span> <span class="n">o1</span><span class="p">.</span><span class="n">content</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span>
198
199 <span class="k">Class</span> <span class="n">Screen</span>
200         <span class="n">content</span> <span class="o">=</span> <span class="o">[]</span>
201         <span class="k">func</span> <span class="n">point</span>
202                 <span class="n">content</span> <span class="o">+</span> <span class="k">new</span> <span class="n">point</span>
203                 <span class="k">return</span> <span class="n">len</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
204
205 <span class="k">Class</span> <span class="n">point</span>
206         <span class="n">x</span>  <span class="o">=</span> <span class="mi">10</span>
207         <span class="n">y</span>  <span class="o">=</span> <span class="mi">20</span>
208         <span class="n">z</span>  <span class="o">=</span> <span class="mi">30</span>
209 </pre></div>
210 </div>
211 <p>実行結果:</p>
212 <div class="highlight-ring"><div class="highlight"><pre><span class="n">x</span><span class="p">:</span> <span class="mf">100.000000</span>
213 <span class="n">y</span><span class="p">:</span> <span class="mf">200.000000</span>
214 <span class="n">z</span><span class="p">:</span> <span class="mf">300.000000</span>
215 <span class="n">x</span><span class="p">:</span> <span class="mf">50.000000</span>
216 <span class="n">y</span><span class="p">:</span> <span class="mf">150.000000</span>
217 <span class="n">z</span><span class="p">:</span> <span class="mf">250.000000</span>
218 </pre></div>
219 </div>
220 <p>用例③:</p>
221 <div class="highlight-ring"><div class="highlight"><pre><span class="k">func</span> <span class="n">main</span>
222         <span class="n">o1</span> <span class="o">=</span> <span class="k">New</span> <span class="n">Screen</span>  <span class="p">{</span>
223                 <span class="n">point</span><span class="p">()</span> <span class="p">{</span>               <span class="c"># 参照でオブジェクトへアクセスします。</span>
224                         <span class="n">x</span> <span class="o">=</span> <span class="mi">100</span>
225                         <span class="n">y</span> <span class="o">=</span> <span class="mi">200</span>
226                         <span class="n">z</span> <span class="o">=</span> <span class="mi">300</span>
227                 <span class="p">}</span>
228                 <span class="n">point</span><span class="p">()</span> <span class="p">{</span>               <span class="c"># 参照でオブジェクトへアクセスします。</span>
229                         <span class="n">x</span> <span class="o">=</span> <span class="mi">50</span>
230                         <span class="n">y</span> <span class="o">=</span> <span class="mi">150</span>
231                         <span class="n">z</span> <span class="o">=</span> <span class="mi">250</span>
232                 <span class="p">}</span>
233         <span class="p">}</span>
234         <span class="k">see</span> <span class="n">o1</span><span class="p">.</span><span class="n">content</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span>
235         <span class="k">see</span> <span class="n">o1</span><span class="p">.</span><span class="n">content</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span>
236
237 <span class="k">Class</span> <span class="n">Screen</span>
238         <span class="n">content</span> <span class="o">=</span> <span class="o">[]</span>
239         <span class="k">func</span> <span class="n">point</span>
240                 <span class="n">content</span> <span class="o">+</span> <span class="k">new</span> <span class="n">point</span>
241                 <span class="k">return</span> <span class="n">content</span><span class="o">[</span><span class="n">len</span><span class="p">(</span><span class="n">content</span><span class="p">)</span><span class="o">]</span>    <span class="c"># オブジェクトを参照で返します。</span>
242
243 <span class="k">Class</span> <span class="n">point</span> <span class="n">x</span><span class="o">=</span><span class="mi">10</span> <span class="n">y</span><span class="o">=</span><span class="mi">20</span> <span class="n">z</span><span class="o">=</span><span class="mi">30</span>
244 </pre></div>
245 </div>
246 <p>実行結果:</p>
247 <div class="highlight-ring"><div class="highlight"><pre><span class="n">x</span><span class="p">:</span> <span class="mf">100.000000</span>
248 <span class="n">y</span><span class="p">:</span> <span class="mf">200.000000</span>
249 <span class="n">z</span><span class="p">:</span> <span class="mf">300.000000</span>
250 <span class="n">x</span><span class="p">:</span> <span class="mf">50.000000</span>
251 <span class="n">y</span><span class="p">:</span> <span class="mf">150.000000</span>
252 <span class="n">z</span><span class="p">:</span> <span class="mf">250.000000</span>
253 </pre></div>
254 </div>
255 </div>
256 <div class="section" id="index-3">
257 <span id="id4"></span><h2>オブジェクトのアクセス完了後にコードを実行するには<a class="headerlink" href="#index-3" title="このヘッドラインへのパーマリンク">¶</a></h2>
258 <p>オブジェクト属性とメソッドを使うには { } でオブジェクトへアクセスします。</p>
259 <p>オブジェクトに BraceEnd() メソッドがある場合は、オブジェクトのアクセス完了直前に実行します。</p>
260 <p>用例:</p>
261 <div class="highlight-ring"><div class="highlight"><pre><span class="k">New</span> <span class="n">Point</span> <span class="p">{</span> <span class="k">See</span> <span class="s">&quot;How are you?&quot;</span> <span class="o">+</span> <span class="n">nl</span> <span class="p">}</span>
262
263 <span class="k">Class</span> <span class="n">Point</span> <span class="n">x</span> <span class="n">y</span> <span class="n">z</span>
264         <span class="k">func</span> <span class="n">braceend</span>
265                 <span class="k">see</span> <span class="s">&quot;I&#39;m fine, Thank you!&quot;</span> <span class="o">+</span> <span class="n">nl</span>
266 </pre></div>
267 </div>
268 <p>実行結果:</p>
269 <div class="highlight-ring"><div class="highlight"><pre><span class="n">How</span> <span class="n">are</span> <span class="n">you</span><span class="o">?</span>
270 <span class="n">I</span><span class="sc">&#39;m fine, Thank you!</span>
271 </pre></div>
272 </div>
273 </div>
274 <div class="section" id="index-4">
275 <span id="id5"></span><h2>オブジェクト指向による宣言型プログラミング<a class="headerlink" href="#index-4" title="このヘッドラインへのパーマリンク">¶</a></h2>
276 <p>この機能でオブジェクト指向による入れ子構造の宣言型プログラミング環境の構築と使用を可能にします。</p>
277 <ul class="simple">
278 <li>{ } によるオブジェクト属性、およびメソッドへのアクセス</li>
279 <li>BraceEnd() メソッド</li>
280 <li>参照によるオブジェクト返し</li>
281 <li>Setter (セッター) / Getter (ゲッター) メソッド (オプション扱い)</li>
282 </ul>
283 <p>用例:</p>
284 <div class="highlight-ring"><div class="highlight"><pre><span class="c"># 宣言型プログラミング (入れ子構造)</span>
285
286 <span class="n">Screen</span><span class="p">()</span>
287 <span class="p">{</span>
288
289         <span class="n">point</span><span class="p">()</span>
290         <span class="p">{</span>
291                 <span class="n">x</span> <span class="o">=</span> <span class="mi">100</span>
292                 <span class="n">y</span> <span class="o">=</span> <span class="mi">200</span>
293                 <span class="n">z</span> <span class="o">=</span> <span class="mi">300</span>
294         <span class="p">}</span>
295
296         <span class="n">point</span><span class="p">()</span>
297         <span class="p">{</span>
298                 <span class="n">x</span> <span class="o">=</span> <span class="mi">50</span>
299                 <span class="n">y</span> <span class="o">=</span> <span class="mi">150</span>
300                 <span class="n">z</span> <span class="o">=</span> <span class="mi">250</span>
301         <span class="p">}</span>
302 <span class="p">}</span>
303
304 <span class="c"># 関数とクラス</span>
305
306 <span class="k">Func</span> <span class="n">screen</span> <span class="k">return</span> <span class="k">new</span> <span class="n">screen</span>
307
308 <span class="k">Class</span> <span class="n">Screen</span>
309
310         <span class="n">content</span> <span class="o">=</span> <span class="o">[]</span>
311
312         <span class="k">func</span> <span class="n">point</span>
313                 <span class="n">content</span> <span class="o">+</span> <span class="k">new</span> <span class="n">point</span>
314                 <span class="k">return</span> <span class="n">content</span><span class="o">[</span><span class="n">len</span><span class="p">(</span><span class="n">content</span><span class="p">)</span><span class="o">]</span>
315
316         <span class="k">func</span> <span class="n">braceend</span>
317                 <span class="k">see</span> <span class="s">&quot;I have &quot;</span> <span class="o">+</span> <span class="n">len</span><span class="p">(</span><span class="n">content</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot; points!&quot;</span>
318
319 <span class="k">Class</span> <span class="n">point</span>
320
321         <span class="n">x</span><span class="o">=</span><span class="mi">10</span> <span class="n">y</span><span class="o">=</span><span class="mi">20</span> <span class="n">z</span><span class="o">=</span><span class="mi">30</span>
322
323         <span class="k">func</span> <span class="n">braceend</span>
324                 <span class="k">see</span> <span class="n">self</span>
325 </pre></div>
326 </div>
327 <p>実行結果:</p>
328 <div class="highlight-ring"><div class="highlight"><pre><span class="n">x</span><span class="p">:</span> <span class="mf">100.000000</span>
329 <span class="n">y</span><span class="p">:</span> <span class="mf">200.000000</span>
330 <span class="n">z</span><span class="p">:</span> <span class="mf">300.000000</span>
331 <span class="n">x</span><span class="p">:</span> <span class="mf">50.000000</span>
332 <span class="n">y</span><span class="p">:</span> <span class="mf">150.000000</span>
333 <span class="n">z</span><span class="p">:</span> <span class="mf">250.000000</span>
334 <span class="n">I</span> <span class="n">have</span> <span class="mi">2</span> <span class="n">points</span><span class="o">!</span>
335 </pre></div>
336 </div>
337 </div>
338 <div class="section" id="index-5">
339 <span id="id6"></span><h2>コード品質の向上<a class="headerlink" href="#index-5" title="このヘッドラインへのパーマリンク">¶</a></h2>
340 <p>メソッドで仮引数を使わないときは、メソッド名末尾の () を省略できます。これにより、コード品質の向上になります。
341 この機能はオブジェクトメソッドとオブジェクト属性との機能に違いがあるため Ring では使えません。
342 オブジェクト属性へ Getter メソッドを定義するとき、同様の効果をコードの構文で実現できます。
343 例えば point() メソッドの定義ではなく point 属性値の取得で実行される
344 getpoint() メソッドを point 属性として定義します。変数名は () を省略できるため、
345 point() ではなく point と記述します。
346 getpoint() メソッドはオブジェクトの作成、およびオブジェクトの参照を返します。</p>
347 <p>用例:</p>
348 <div class="highlight-ring"><div class="highlight"><pre><span class="k">new</span> <span class="n">Container</span>
349 <span class="p">{</span>
350         <span class="n">Point</span>
351         <span class="p">{</span>
352                 <span class="n">x</span><span class="o">=</span><span class="mi">10</span>
353                 <span class="n">y</span><span class="o">=</span><span class="mi">20</span>
354                 <span class="n">z</span><span class="o">=</span><span class="mi">30</span>
355         <span class="p">}</span>
356 <span class="p">}</span>
357
358 <span class="k">Class</span> <span class="n">Container</span>
359         <span class="n">aObjs</span> <span class="o">=</span> <span class="o">[]</span>
360         <span class="n">point</span>
361         <span class="k">func</span> <span class="n">getpoint</span>
362                 <span class="n">aObjs</span> <span class="o">+</span> <span class="k">new</span> <span class="n">Point</span>
363                 <span class="k">return</span> <span class="n">aObjs</span><span class="o">[</span><span class="n">len</span><span class="p">(</span><span class="n">aObjs</span><span class="p">)</span><span class="o">]</span>
364
365 <span class="k">Class</span> <span class="n">Point</span> <span class="n">x</span> <span class="n">y</span> <span class="n">z</span>
366         <span class="k">func</span> <span class="n">braceend</span>
367                 <span class="k">see</span> <span class="s">&quot;3D Point&quot;</span> <span class="o">+</span> <span class="n">nl</span> <span class="o">+</span> <span class="n">x</span> <span class="o">+</span> <span class="n">nl</span> <span class="o">+</span> <span class="n">y</span> <span class="o">+</span> <span class="n">nl</span> <span class="o">+</span> <span class="n">z</span> <span class="o">+</span> <span class="n">nl</span>
368 </pre></div>
369 </div>
370 <p>実行結果:</p>
371 <div class="highlight-ring"><div class="highlight"><pre>3D Point
372 10
373 20
374 30
375 </pre></div>
376 </div>
377 </div>
378 </div>
379
380
381           </div>
382         </div>
383       </div>
384       <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
385         <div class="sphinxsidebarwrapper"><h3>ページの内容</h3>
386 <ul>
387 <li><a class="reference internal" href="#">入れ子構造の宣言型プログラミング</a><ul>
388 <li><a class="reference internal" href="#index-1">リストへオブジェクトを作成するには</a></li>
389 <li><a class="reference internal" href="#index-2">コンポジションと参照によりオブジェクトとリストを返すには</a></li>
390 <li><a class="reference internal" href="#index-3">オブジェクトのアクセス完了後にコードを実行するには</a></li>
391 <li><a class="reference internal" href="#index-4">オブジェクト指向による宣言型プログラミング</a></li>
392 <li><a class="reference internal" href="#index-5">コード品質の向上</a></li>
393 </ul>
394 </li>
395 </ul>
396
397
398   <h4>前のトピックへ</h4>
399   <p class="topless"><a href="stdlibclasses.html"
400                         title="前の章へ">Stdlib クラス</a></p>
401   <h4>次のトピックへ</h4>
402   <p class="topless"><a href="natural.html"
403                         title="次の章へ">自然言語プログラミング</a></p>
404   <div role="note" aria-label="source link">
405     <h3>このページ</h3>
406     <ul class="this-page-menu">
407       <li><a href="_sources/declarative.txt"
408             rel="nofollow">ソースコードを表示</a></li>
409     </ul>
410    </div>
411       
412 <form action="search.html" method="get">
413   <input type="text" name="q" placeholder="Search" />
414   <input type="hidden" name="check_keywords" value="yes" />
415   <input type="hidden" name="area" value="default" />
416 </form>
417       
418         </div>
419       </div>
420       <div class="clearer"></div>
421     </div>
422 <footer class="footer">
423   <p class="pull-right">
424     <a href="_sources/declarative.txt"
425        rel="nofollow">Page Source</a> &nbsp;
426     <a href="#">Back to Top</a></p>
427   <p>
428     &copy; Copyright 2016-2020, Ring Team.<br/>
429     Created using <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> 1.3.6. / astropy-sphinx-theme 1.1 (isVowel)
430   </p>
431 </footer>
432   </body>
433 </html>