OSDN Git Service

ae5a8dc9cbd17446b9565575af5dc26949c0d934
[ring-lang-081/ring.git] / docs / build / html / evaldebug.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>Eval() とデバッグ &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="demo.html" />
29     <link rel="prev" title="システム関数" href="systemfunc.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="demo.html" title="デモプログラム">
65           next &raquo;
66         </a>
67       </li>
68       <li class="right">
69         <a href="systemfunc.html" title="システム関数">
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>Eval() とデバッグ</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="eval">
90 <span id="index-0"></span><h1>Eval() とデバッグ<a class="headerlink" href="#eval" title="このヘッドラインへのパーマリンク">¶</a></h1>
91 <p>下記の用法を学びます。</p>
92 <ul class="simple">
93 <li>Try/Catch/Done によるエラー処理</li>
94 <li>Eval() 関数</li>
95 <li>Raise() 関数</li>
96 <li>Assert() 関数</li>
97 </ul>
98 <div class="section" id="try-catch-done">
99 <span id="index-1"></span><h2>Try/Catch/Done<a class="headerlink" href="#try-catch-done" title="このヘッドラインへのパーマリンク">¶</a></h2>
100 <p>文法:</p>
101 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Try</span>
102         <span class="n">ステートメント</span><span class="p">...</span>
103 <span class="k">Catch</span>
104         <span class="n">ステートメント</span><span class="p">...</span>
105 <span class="k">Done</span>
106 </pre></div>
107 </div>
108 <p>まず Try ブロックのステートメントが実行されます。
109 そしてエラーが発生すると catch ブロックのステートメントが実行されます。</p>
110 <p>catch ブロックの内側では変数 cCatchError でエラーメッセージを取得できます。</p>
111 <p>用例:</p>
112 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Try</span>
113         <span class="k">see</span> <span class="mi">5</span><span class="o">/</span><span class="mi">0</span>
114 <span class="k">Catch</span>
115         <span class="k">see</span> <span class="s">&quot;Catch!&quot;</span> <span class="o">+</span> <span class="n">nl</span> <span class="o">+</span> <span class="n">cCatchError</span>
116 <span class="k">Done</span>
117 </pre></div>
118 </div>
119 <p>実行結果:</p>
120 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Catch</span><span class="o">!</span>
121 <span class="n">Error</span> <span class="p">(</span><span class="n">R1</span><span class="p">)</span> <span class="p">:</span> <span class="n">Cann</span><span class="sc">&#39;t divide by zero !</span>
122 </pre></div>
123 </div>
124 </div>
125 <div class="section" id="index-2">
126 <span id="id1"></span><h2>Eval() 関数<a class="headerlink" href="#index-2" title="このヘッドラインへのパーマリンク">¶</a></h2>
127 <p>Eval() 関数は実行時に文字列からコードを実行します。</p>
128 <p>文法:</p>
129 <div class="highlight-ring"><div class="highlight"><pre><span class="n">Eval</span><span class="p">(</span><span class="n">cCode</span><span class="p">)</span>
130 </pre></div>
131 </div>
132 <p>用例:</p>
133 <div class="highlight-ring"><div class="highlight"><pre><span class="n">Eval</span><span class="p">(</span><span class="s">&quot;nOutput = 5+2*5 &quot;</span> <span class="p">)</span>
134 <span class="k">See</span> <span class="s">&quot;5+2*5 = &quot;</span> <span class="o">+</span> <span class="n">nOutput</span> <span class="o">+</span> <span class="n">nl</span>
135 <span class="n">Eval</span><span class="p">(</span><span class="s">&quot;for x = 1 to 10 see x + nl next&quot;</span><span class="p">)</span>
136 <span class="n">Eval</span><span class="p">(</span><span class="s">&quot;func test see &#39;message from test!&#39; &quot;</span><span class="p">)</span>
137 <span class="n">test</span><span class="p">()</span>
138 </pre></div>
139 </div>
140 <p>実行結果:</p>
141 <div class="highlight-ring"><div class="highlight"><pre><span class="mi">5</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="mi">5</span> <span class="o">=</span> <span class="mi">15</span>
142 <span class="mi">1</span>
143 <span class="mi">2</span>
144 <span class="mi">3</span>
145 <span class="mi">4</span>
146 <span class="mi">5</span>
147 <span class="mi">6</span>
148 <span class="mi">7</span>
149 <span class="mi">8</span>
150 <span class="mi">9</span>
151 <span class="mi">10</span>
152 <span class="n">message</span> <span class="k">from</span> <span class="n">test</span><span class="o">!</span>
153 </pre></div>
154 </div>
155 <p>Return 命令で値を返せます。</p>
156 <p>用例:</p>
157 <div class="highlight-ring"><div class="highlight"><pre><span class="k">see</span> <span class="n">Eval</span><span class="p">(</span><span class="s">&quot;return 5*5&quot;</span><span class="p">)</span>
158 </pre></div>
159 </div>
160 <p>実行結果:</p>
161 <div class="highlight-ring"><div class="highlight"><pre><span class="mi">25</span>
162 </pre></div>
163 </div>
164 </div>
165 <div class="section" id="raise">
166 <span id="index-3"></span><h2>Raise() 関数<a class="headerlink" href="#raise" title="このヘッドラインへのパーマリンク">¶</a></h2>
167 <p>Raise() 関数は例外を発生します。</p>
168 <p>文法:</p>
169 <div class="highlight-ring"><div class="highlight"><pre><span class="n">Raise</span><span class="p">(</span><span class="n">cErrorMessage</span><span class="p">)</span>
170 </pre></div>
171 </div>
172 <p>この関数はエラーメッセージを表示した後にプログラムを終了します。</p>
173 <p>raise() 関数で生成された例外は Try/Catch/Done により回避できます。</p>
174 <p>用例:</p>
175 <div class="highlight-ring"><div class="highlight"><pre><span class="n">nMode</span> <span class="o">=</span> <span class="mi">10</span>
176
177 <span class="k">if</span> <span class="n">nMode</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">nMode</span> <span class="o">&gt;</span> <span class="mi">5</span>
178         <span class="n">raise</span><span class="p">(</span><span class="s">&quot;Error : nMode not in the range 1:4&quot;</span><span class="p">)</span>
179 <span class="k">ok</span>
180 </pre></div>
181 </div>
182 <p>実行結果:</p>
183 <div class="highlight-ring"><div class="highlight"><pre><span class="n">Line</span> <span class="mi">4</span> <span class="n">Error</span> <span class="p">:</span> <span class="n">nMode</span> <span class="ow">not</span> <span class="k">in</span> <span class="n">the</span> <span class="n">range</span> <span class="mi">1</span><span class="p">:</span><span class="mi">4</span>
184 <span class="k">In</span> <span class="n">raise</span> <span class="k">in</span> <span class="n">file</span> <span class="n">tests</span><span class="o">\</span><span class="n">raise</span><span class="p">.</span><span class="n">ring</span>
185 </pre></div>
186 </div>
187 <p>用例:</p>
188 <div class="highlight-ring"><div class="highlight"><pre><span class="k">try</span>
189         <span class="n">testmode</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span>
190 <span class="k">catch</span>
191         <span class="k">see</span> <span class="s">&quot;avoid raise!&quot;</span>
192 <span class="k">done</span>
193
194 <span class="n">testmode</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
195
196 <span class="k">func</span> <span class="n">testmode</span> <span class="n">nMode</span>
197
198         <span class="k">if</span> <span class="n">nMode</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">nMode</span> <span class="o">&gt;</span> <span class="mi">5</span>
199                 <span class="n">raise</span><span class="p">(</span><span class="s">&quot;Error : nMode not in the range 1:4&quot;</span><span class="p">)</span>
200         <span class="k">ok</span>
201 </pre></div>
202 </div>
203 <p>実行結果:</p>
204 <div class="highlight-ring"><div class="highlight"><pre><span class="n">avoid</span> <span class="n">raise</span><span class="o">!</span>
205 <span class="n">Line</span> <span class="mi">12</span> <span class="n">Error</span> <span class="p">:</span> <span class="n">nMode</span> <span class="ow">not</span> <span class="k">in</span> <span class="n">the</span> <span class="n">range</span> <span class="mi">1</span><span class="p">:</span><span class="mi">4</span>
206 <span class="k">In</span> <span class="n">raise</span> <span class="k">In</span> <span class="n">function</span> <span class="n">testmode</span><span class="p">()</span> <span class="k">in</span> <span class="n">file</span> <span class="n">tests</span><span class="o">\</span><span class="n">raise2</span><span class="p">.</span><span class="n">ring</span>
207 <span class="n">called</span> <span class="k">from</span> <span class="n">line</span> <span class="mi">7</span>  <span class="k">in</span> <span class="n">file</span> <span class="n">tests</span><span class="o">\</span><span class="n">raise2</span><span class="p">.</span><span class="n">ring</span>
208 </pre></div>
209 </div>
210 </div>
211 <div class="section" id="assert">
212 <span id="index-4"></span><h2>Assert() 関数<a class="headerlink" href="#assert" title="このヘッドラインへのパーマリンク">¶</a></h2>
213 <p>Assert() 関数はコードの実行前に条件をテストします。</p>
214 <p>テストに失敗した場合は、アサートの条件を有するエラーメッセージを表示後にプログラムを終了します。</p>
215 <p>文法:</p>
216 <div class="highlight-ring"><div class="highlight"><pre><span class="n">Assert</span><span class="p">(</span> <span class="n">条件</span> <span class="p">)</span>
217 </pre></div>
218 </div>
219 <p>用例:</p>
220 <div class="highlight-ring"><div class="highlight"><pre><span class="n">x</span> <span class="o">=</span> <span class="mi">10</span>
221 <span class="n">assert</span><span class="p">(</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">10</span><span class="p">)</span>
222 <span class="n">assert</span><span class="p">(</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">100</span> <span class="p">)</span>
223 </pre></div>
224 </div>
225 <p>実行結果:</p>
226 <div class="highlight-ring"><div class="highlight"><pre><span class="n">Line</span> <span class="mi">3</span> <span class="n">Assertion</span> <span class="n">Failed</span><span class="o">!</span>
227 <span class="k">In</span> <span class="n">assert</span> <span class="k">in</span> <span class="n">file</span> <span class="n">tests</span><span class="o">\</span><span class="n">assert</span><span class="p">.</span><span class="n">ring</span>
228 </pre></div>
229 </div>
230 </div>
231 </div>
232
233
234           </div>
235         </div>
236       </div>
237       <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
238         <div class="sphinxsidebarwrapper"><h3>ページの内容</h3>
239 <ul>
240 <li><a class="reference internal" href="#">Eval() とデバッグ</a><ul>
241 <li><a class="reference internal" href="#try-catch-done">Try/Catch/Done</a></li>
242 <li><a class="reference internal" href="#index-2">Eval() 関数</a></li>
243 <li><a class="reference internal" href="#raise">Raise() 関数</a></li>
244 <li><a class="reference internal" href="#assert">Assert() 関数</a></li>
245 </ul>
246 </li>
247 </ul>
248
249
250   <h4>前のトピックへ</h4>
251   <p class="topless"><a href="systemfunc.html"
252                         title="前の章へ">システム関数</a></p>
253   <h4>次のトピックへ</h4>
254   <p class="topless"><a href="demo.html"
255                         title="次の章へ">デモプログラム</a></p>
256   <div role="note" aria-label="source link">
257     <h3>このページ</h3>
258     <ul class="this-page-menu">
259       <li><a href="_sources/evaldebug.txt"
260             rel="nofollow">ソースコードを表示</a></li>
261     </ul>
262    </div>
263       
264 <form action="search.html" method="get">
265   <input type="text" name="q" placeholder="Search" />
266   <input type="hidden" name="check_keywords" value="yes" />
267   <input type="hidden" name="area" value="default" />
268 </form>
269       
270         </div>
271       </div>
272       <div class="clearer"></div>
273     </div>
274 <footer class="footer">
275   <p class="pull-right">
276     <a href="_sources/evaldebug.txt"
277        rel="nofollow">Page Source</a> &nbsp;
278     <a href="#">Back to Top</a></p>
279   <p>
280     &copy; Copyright 2016-2020, Ring Team.<br/>
281     Created using <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> 1.3.6. / astropy-sphinx-theme 1.1 (isVowel)
282   </p>
283 </footer>
284   </body>
285 </html>