OSDN Git Service

タグを打ち忘れていたついでに、html版ドキュメントを追加しました。
[ring-lang-081/ring.git] / docs / build / html / whatisnew.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>Ring 1.1 の変更履歴 &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="sourcecode.html" />
29     <link rel="prev" title="Ring 1.2 の変更履歴" href="whatisnew2.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="sourcecode.html" title="ソースコードからのビルド方法">
65           next &raquo;
66         </a>
67       </li>
68       <li class="right">
69         <a href="whatisnew2.html" title="Ring 1.2 の変更履歴">
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>Ring 1.1 の変更履歴</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="ring-1-1">
90 <span id="index-0"></span><h1>Ring 1.1 の変更履歴<a class="headerlink" href="#ring-1-1" title="このヘッドラインへのパーマリンク">¶</a></h1>
91 <p>Ring 1.1 公開版の変更点と新機能を学びます。</p>
92 <div class="section" id="index-1">
93 <span id="id1"></span><h2>新機能と変更リスト<a class="headerlink" href="#index-1" title="このヘッドラインへのパーマリンク">¶</a></h2>
94 <p>Ring 1.1 の新機能!</p>
95 <ul class="simple">
96 <li>自然言語プログラミングへの対応を改善</li>
97 <li>Ring オブジェクトファイル (*.ringo) の生成と実行</li>
98 <li>シンタックスの柔軟性と出入力、および制御構造の各種記法</li>
99 <li>新しい関数と変更</li>
100 <li>Ring で記述した StdLib 関数とクラス</li>
101 <li>RingLibSDL</li>
102 <li>デモプロジェクト - 2D ゲームエンジン</li>
103 <li>RingSQLite</li>
104 <li>拡張機能に関するコード生成器の改善</li>
105 <li>新しい属性を定義するためにクラス範囲で Self.属性 の使用</li>
106 <li>クラスのメソッド内で入れ子の括弧で This.属性 の使用</li>
107 <li>取扱説明書の増補</li>
108 </ul>
109 </div>
110 <div class="section" id="index-2">
111 <span id="id2"></span><h2>自然言語プログラミングへの対応を改善<a class="headerlink" href="#index-2" title="このヘッドラインへのパーマリンク">¶</a></h2>
112 <p>Ring は、画期的なプログラミング言語であり、小規模のシンタックス、高性能な実装 (小規模、透過型、および視覚型)、
113 短時間で作成・構築できる宣言型、および自然なドメイン特化言語機能を標準装備しています。</p>
114 <p>この公開版では、式の評価後のメソッド呼び出しに対応しました。</p>
115 <p>この用例をご確認ください:</p>
116 <div class="highlight-ring"><div class="highlight"><pre><span class="c"># 自然言語コード</span>
117 <span class="k">new</span> <span class="n">program</span> <span class="p">{</span>
118         <span class="n">Accept</span> <span class="mi">2</span> <span class="n">numbers</span> <span class="n">then</span> <span class="n">print</span> <span class="n">the</span> <span class="n">sum</span>
119 <span class="p">}</span>
120
121 <span class="c"># 自然言語コードの実装</span>
122 <span class="k">class</span> <span class="n">program</span>
123         <span class="c"># キーワード</span>
124                 <span class="n">Accept</span><span class="o">=</span><span class="mi">0</span> <span class="n">numbers</span><span class="o">=</span><span class="mi">0</span> <span class="n">then</span><span class="o">=</span><span class="mi">0</span> <span class="n">print</span><span class="o">=</span><span class="mi">0</span> <span class="n">the</span><span class="o">=</span><span class="mi">0</span> <span class="n">sum</span><span class="o">=</span><span class="mi">0</span>
125
126         <span class="c"># 実行</span>
127         <span class="k">func</span> <span class="n">braceexpreval</span> <span class="n">x</span>
128                 <span class="n">value</span> <span class="o">=</span> <span class="n">x</span>
129         <span class="k">func</span> <span class="n">getnumbers</span>
130                 <span class="k">for</span> <span class="n">x</span><span class="o">=</span><span class="mi">1</span> <span class="k">to</span> <span class="n">value</span>
131                         <span class="k">see</span> <span class="s">&quot;Enter Number (&quot;</span><span class="o">+</span><span class="n">x</span><span class="o">+</span><span class="s">&quot;) :&quot;</span> <span class="k">give</span> <span class="n">nNumber</span>
132                         <span class="n">aNumbers</span> <span class="o">+</span> <span class="n">nNumber</span>
133                 <span class="k">next</span>
134         <span class="k">func</span> <span class="n">getsum</span>
135                 <span class="n">nSUm</span> <span class="o">=</span> <span class="mi">0</span>
136                 <span class="k">for</span> <span class="n">x</span> <span class="k">in</span> <span class="n">aNumbers</span> <span class="n">nSum</span><span class="o">+=</span> <span class="n">x</span> <span class="k">next</span>
137                 <span class="k">see</span> <span class="s">&quot;The Sum : &quot;</span> <span class="o">+</span> <span class="n">nSum</span>
138         <span class="n">private</span>
139                 <span class="n">value</span><span class="o">=</span><span class="mi">0</span> <span class="n">aNumbers</span><span class="o">=[]</span>
140 </pre></div>
141 </div>
142 <p>実行結果:</p>
143 <div class="highlight-ring"><div class="highlight"><pre><span class="n">Enter</span> <span class="n">Number</span> <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">:</span><span class="mi">3</span>
144 <span class="n">Enter</span> <span class="n">Number</span> <span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="p">:</span><span class="mi">4</span>
145 <span class="n">The</span> <span class="n">Sum</span> <span class="p">:</span> <span class="mi">7</span>
146 </pre></div>
147 </div>
148 <p>詳細情報は “自然言語プログラミング” の章を参照してください。</p>
149 </div>
150 <div class="section" id="ring-ringo">
151 <span id="index-3"></span><h2>Ring オブジェクトファイル (*.ringo) の生成と実行<a class="headerlink" href="#ring-ringo" title="このヘッドラインへのパーマリンク">¶</a></h2>
152 <p>この機能は、ソースコードの配布を行わずにアプリケーションを配布できるようにします。
153 アプリケーションの配布を単純な処理により、完全なプロジェクトの単体 Ring オブジェクトファイルを取得できます (複数のソースコードファイル)。
154 また、Ring オブジェクトファイルを使うとアプリケーションのコンパイルで、ソースファイルの読み込みにかかる処理時間が無くなり、動作速度の向上につながります。</p>
155 <p>この機能に関する詳細情報は “コマンドラインのオプション” の章をご確認ください。</p>
156 </div>
157 <div class="section" id="index-4">
158 <span id="id3"></span><h2>シンタックスの柔軟性と出入力および制御構造の様々な記法<a class="headerlink" href="#index-4" title="このヘッドラインへのパーマリンク">¶</a></h2>
159 <p>プログラマはプログラミング言語のシンタックスには神経質です。
160 すばらしいプログラマは様々な記法で仕事をする方法を理解していますが、プログラマには各々好みの記法があります。</p>
161 <p>プログラミング言語ごとに好き嫌いの分かれる記法があります。
162 Ring は、あまたにあるプログラミング言語の一つです。
163 しかし、より優れたシンタックスを求めている世界中のプログラマへの回答として、豊富な選択肢を選べるようにしました。</p>
164 <p>また、これらの機能が自然言語プログラミングには最も必要なものです。</p>
165 <p>用例 :</p>
166 <p>言語のキーワードと演算子の変更に使用する二種類のコマンドがあります。</p>
167 <div class="highlight-ring"><div class="highlight"><pre><span class="k">ChangeRingOperator</span> <span class="o">+</span> <span class="n">plus</span>
168 <span class="k">ChangeRingKeyword</span> <span class="k">see</span> <span class="n">print</span>
169
170 <span class="n">Print</span> <span class="mi">5</span> <span class="n">plus</span> <span class="mi">5</span>
171
172 <span class="k">ChangeRingOperator</span> <span class="n">plus</span> <span class="o">+</span>
173 <span class="k">ChangeRingKeyword</span> <span class="n">print</span> <span class="k">see</span>
174 </pre></div>
175 </div>
176 <p>入出力用の新しい記法があります (オプション扱い)。</p>
177 <p>用例:</p>
178 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Put</span> <span class="s">&quot;What is your name? &quot;</span>
179 <span class="k">Get</span> <span class="n">cName</span>
180 <span class="k">Put</span> <span class="s">&quot;Hello &quot;</span> <span class="o">+</span> <span class="n">cName</span>
181 </pre></div>
182 </div>
183 <p>用例:</p>
184 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
185
186 <span class="n">Print</span><span class="p">(</span><span class="s">&quot;What is your name? &quot;</span><span class="p">)</span>    <span class="c"># 画面へメッセージを表示</span>
187 <span class="n">cName</span><span class="o">=</span><span class="n">GetString</span><span class="p">()</span>               <span class="c"># ユーザからの標準入力を取得</span>
188 <span class="n">print</span><span class="p">(</span><span class="s">&quot;Hello #{cName}&quot;</span><span class="p">)</span>         <span class="c"># hello と言おう!</span>
189 </pre></div>
190 </div>
191 <p>制御構造用の新しい記法があります (オプション扱い)。</p>
192 <p>用例:</p>
193 <div class="highlight-ring"><div class="highlight"><pre><span class="k">While</span> <span class="kp">True</span>
194
195         <span class="k">Put</span> <span class="s">&quot;</span>
196                 <span class="n">Main</span> <span class="n">Menu</span>
197                 <span class="o">---------</span>
198                 <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="n">Say</span> <span class="n">Hello</span>
199                 <span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="n">About</span>
200                 <span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="k">Exit</span>
201
202             <span class="s">&quot; Get nOption</span>
203
204         <span class="k">Switch</span> <span class="n">nOption</span>
205         <span class="k">Case</span> <span class="mi">1</span>
206                 <span class="k">Put</span> <span class="s">&quot;Enter your name : &quot;</span>
207                 <span class="k">Get</span> <span class="n">name</span>
208                 <span class="k">Put</span> <span class="s">&quot;Hello &quot;</span> <span class="o">+</span> <span class="n">name</span> <span class="o">+</span> <span class="n">nl</span>
209         <span class="k">Case</span> <span class="mi">2</span>
210                 <span class="k">Put</span> <span class="s">&quot;Sample : using while loop&quot;</span> <span class="o">+</span> <span class="n">nl</span>
211         <span class="k">Case</span> <span class="mi">3</span>
212                 <span class="k">Bye</span>
213         <span class="k">Else</span>
214                 <span class="k">Put</span> <span class="s">&quot;bad option...&quot;</span> <span class="o">+</span> <span class="n">nl</span>
215         <span class="k">End</span>
216 <span class="k">End</span>
217 </pre></div>
218 </div>
219 <p>用例:</p>
220 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
221
222 <span class="k">While</span> <span class="kp">True</span> <span class="p">{</span>
223
224         <span class="n">print</span><span class="p">(</span><span class="s">&quot;</span>
225                 <span class="n">Main</span> <span class="n">Menu</span>
226                 <span class="o">---------</span>
227                 <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="n">Say</span> <span class="n">Hello</span>
228                 <span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="n">About</span>
229                 <span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="k">Exit</span>
230
231                   <span class="s">&quot;)</span>
232
233         <span class="n">nOption</span> <span class="o">=</span> <span class="n">GetString</span><span class="p">()</span>
234
235         <span class="k">switch</span> <span class="n">nOption</span> <span class="p">{</span>
236         <span class="k">case</span> <span class="mi">1</span>
237                 <span class="n">print</span><span class="p">(</span><span class="s">&quot;Enter your name : &quot;</span><span class="p">)</span>
238                 <span class="n">name</span> <span class="o">=</span> <span class="n">getstring</span><span class="p">()</span>
239                 <span class="n">print</span><span class="p">(</span><span class="s">&quot;Hello #{name}</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">)</span>
240         <span class="k">case</span> <span class="mi">2</span>
241                 <span class="n">print</span><span class="p">(</span><span class="s">&quot;Sample : using switch statement</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">)</span>
242         <span class="k">case</span> <span class="mi">3</span>
243                 <span class="k">Bye</span>
244         <span class="k">else</span>
245                 <span class="n">print</span><span class="p">(</span><span class="s">&quot;bad option...</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">)</span>
246         <span class="p">}</span>
247
248 <span class="p">}</span>
249 </pre></div>
250 </div>
251 <p>この章をご確認ください:</p>
252 <ul class="simple">
253 <li>入門 - 第二形式</li>
254 <li>入門 - 第三形式</li>
255 <li>制御構造 - 第二形式 - Lua および Ruby 風の記法</li>
256 <li>制御構造 - 第三形式 - C 風の記法 (括弧の使用)</li>
257 <li>シンタックスの柔軟性</li>
258 </ul>
259 <div class="admonition note">
260 <p class="first admonition-title">注釈</p>
261 <p class="last">これらすべての記法は自動的かつ同時にコンパイラで使えます。
262 例えば Put/Get および括弧の使用を許可するなど同じプロジェクトでは記法を一つだけ選択するのが良いです
263 (記法を併用して、別の記法を作成することもできます)。</p>
264 </div>
265 </div>
266 <div class="section" id="index-5">
267 <span id="id4"></span><h2>新しい関数と変更<a class="headerlink" href="#index-5" title="このヘッドラインへのパーマリンク">¶</a></h2>
268 <p>変更:</p>
269 <ul class="simple">
270 <li>get() 関数 : sysget() へ変更。</li>
271 <li>sort(), find() 関数 : オブジェクトのリストでも動作するようになりました。</li>
272 </ul>
273 <p>追加:</p>
274 <ul class="simple">
275 <li>clockspersecond()</li>
276 <li>CurrentDir()</li>
277 <li>ExeFileName()</li>
278 <li>ChDir()</li>
279 <li>ExeFolder()</li>
280 <li>varptr()</li>
281 <li>space()</li>
282 <li>nullpointer()</li>
283 <li>object2pointer()</li>
284 <li>pointer2object()</li>
285 </ul>
286 <p>この章をご確認ください:</p>
287 <ul class="simple">
288 <li>システム関数</li>
289 <li>オブジェクト指向プログラミング (OOP)</li>
290 <li>低水準関数</li>
291 </ul>
292 </div>
293 <div class="section" id="ring-stdlib">
294 <span id="index-6"></span><h2>Ring で記述された StdLib 関数とクラス<a class="headerlink" href="#ring-stdlib" title="このヘッドラインへのパーマリンク">¶</a></h2>
295 <p>Ring 1.1 には Ring チームの協力により Ring で記述された StdLib ライブラリがあります。</p>
296 <p>このライブラリでは新しい関数とクラスの実用的なグループを実装しています。</p>
297 <p>用例:</p>
298 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
299
300 <span class="n">Puts</span><span class="p">(</span><span class="s">&quot;Test Times()&quot;</span><span class="p">)</span>
301 <span class="n">Times</span> <span class="p">(</span> <span class="mi">3</span> <span class="p">,</span> <span class="k">func</span> <span class="p">{</span> <span class="k">see</span> <span class="s">&quot;Hello, World!&quot;</span> <span class="o">+</span> <span class="n">nl</span> <span class="p">}</span> <span class="p">)</span>
302 </pre></div>
303 </div>
304 <p>用例:</p>
305 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
306
307 <span class="n">Puts</span><span class="p">(</span><span class="s">&quot;Test Map()&quot;</span><span class="p">)</span>
308 <span class="k">See</span> <span class="n">Map</span><span class="p">(</span> <span class="mi">1</span><span class="p">:</span><span class="mi">10</span><span class="p">,</span> <span class="k">func</span> <span class="n">x</span> <span class="p">{</span> <span class="k">return</span> <span class="n">x</span><span class="o">*</span><span class="n">x</span> <span class="p">}</span> <span class="p">)</span>
309 </pre></div>
310 </div>
311 <p>用例:</p>
312 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
313
314 <span class="n">Puts</span><span class="p">(</span><span class="s">&quot;Test Filter()&quot;</span><span class="p">)</span>
315 <span class="k">See</span> <span class="n">Filter</span><span class="p">(</span> <span class="mi">1</span><span class="p">:</span><span class="mi">10</span> <span class="p">,</span> <span class="k">func</span> <span class="n">x</span> <span class="p">{</span> <span class="k">if</span> <span class="n">x</span> <span class="o">&lt;=</span> <span class="mi">5</span> <span class="k">return</span> <span class="kp">true</span> <span class="k">else</span> <span class="k">return</span> <span class="kp">false</span> <span class="k">ok</span> <span class="p">}</span> <span class="p">)</span>
316 </pre></div>
317 </div>
318 <p>用例:</p>
319 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
320
321 <span class="k">See</span> <span class="s">&quot;Testing the String Class&quot;</span> <span class="o">+</span> <span class="n">nl</span>
322 <span class="n">oString</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">string</span><span class="p">(</span><span class="s">&quot;Hello, World!&quot;</span><span class="p">)</span>
323 <span class="n">oString</span><span class="p">.</span><span class="n">println</span><span class="p">()</span>
324 <span class="n">oString</span><span class="p">.</span><span class="n">upper</span><span class="p">().</span><span class="n">println</span><span class="p">()</span>
325 <span class="n">oString</span><span class="p">.</span><span class="n">lower</span><span class="p">().</span><span class="n">println</span><span class="p">()</span>
326 <span class="n">oString</span><span class="p">.</span><span class="n">left</span><span class="p">(</span><span class="mi">5</span><span class="p">).</span><span class="n">println</span><span class="p">()</span>
327 <span class="n">oString</span><span class="p">.</span><span class="n">right</span><span class="p">(</span><span class="mi">6</span><span class="p">).</span><span class="n">println</span><span class="p">()</span>
328 </pre></div>
329 </div>
330 <p>用例:</p>
331 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
332
333 <span class="n">oList</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">list</span> <span class="p">(</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="p">)</span>
334 <span class="n">oList</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
335 <span class="n">oList</span><span class="p">.</span><span class="n">print</span><span class="p">()</span>
336 </pre></div>
337 </div>
338 <p>用例:</p>
339 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
340
341 <span class="n">oStack</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">Stack</span>
342 <span class="n">oStack</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
343 <span class="n">oStack</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
344 <span class="n">oStack</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
345 <span class="k">see</span> <span class="n">oStack</span><span class="p">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">+</span> <span class="n">nl</span>
346 </pre></div>
347 </div>
348 <p>用例:</p>
349 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
350
351 <span class="n">oQueue</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">Queue</span>
352 <span class="n">oQueue</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
353 <span class="n">oQueue</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
354 <span class="n">oQueue</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
355 <span class="k">see</span> <span class="n">oQueue</span><span class="p">.</span><span class="n">remove</span><span class="p">()</span> <span class="o">+</span> <span class="n">nl</span>
356 </pre></div>
357 </div>
358 <p>用例:</p>
359 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
360
361 <span class="n">ohashtable</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">hashtable</span>
362 <span class="k">See</span> <span class="s">&quot;Test the hashtable Class Methods&quot;</span> <span class="o">+</span> <span class="n">nl</span>
363 <span class="n">ohashtable</span> <span class="p">{</span>
364         <span class="n">Add</span><span class="p">(</span><span class="s">&quot;Egypt&quot;</span><span class="p">,</span><span class="s">&quot;Cairo&quot;</span><span class="p">)</span>
365         <span class="n">Add</span><span class="p">(</span><span class="s">&quot;KSA&quot;</span><span class="p">,</span><span class="s">&quot;Riyadh&quot;</span><span class="p">)</span>
366         <span class="k">see</span> <span class="n">self</span><span class="o">[</span><span class="s">&quot;Egypt&quot;</span><span class="o">]</span> <span class="o">+</span> <span class="n">nl</span>
367         <span class="k">see</span> <span class="n">self</span><span class="o">[</span><span class="s">&quot;KSA&quot;</span><span class="o">]</span> <span class="o">+</span> <span class="n">nl</span>
368         <span class="k">see</span> <span class="n">contains</span><span class="p">(</span><span class="s">&quot;Egypt&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">nl</span>
369         <span class="k">see</span> <span class="n">contains</span><span class="p">(</span><span class="s">&quot;USA&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">nl</span>
370         <span class="k">see</span> <span class="n">index</span><span class="p">(</span><span class="s">&quot;KSA&quot;</span><span class="p">)</span>  <span class="o">+</span> <span class="n">NL</span>
371         <span class="n">print</span><span class="p">()</span>
372         <span class="n">delete</span><span class="p">(</span><span class="n">index</span><span class="p">(</span><span class="s">&quot;KSA&quot;</span><span class="p">))</span>
373         <span class="k">see</span> <span class="n">copy</span><span class="p">(</span><span class="s">&quot;*&quot;</span><span class="p">,</span><span class="mi">60</span><span class="p">)</span> <span class="o">+</span> <span class="n">nl</span>
374         <span class="n">print</span><span class="p">()</span>
375 <span class="p">}</span>
376 </pre></div>
377 </div>
378 <p>用例:</p>
379 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;stdlib.ring&quot;</span>
380
381 <span class="n">otree</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">tree</span>
382 <span class="k">See</span> <span class="s">&quot;Test the tree Class Methods&quot;</span> <span class="o">+</span> <span class="n">nl</span>
383 <span class="n">otree</span> <span class="p">{</span>
384         <span class="n">set</span><span class="p">(</span><span class="s">&quot;The first step&quot;</span><span class="p">)</span>   <span class="c"># ルートノードの値を設定します。</span>
385         <span class="k">see</span> <span class="n">value</span><span class="p">()</span> <span class="o">+</span> <span class="n">nl</span>
386         <span class="n">Add</span><span class="p">(</span><span class="s">&quot;one&quot;</span><span class="p">)</span>
387         <span class="n">Add</span><span class="p">(</span><span class="s">&quot;two&quot;</span><span class="p">)</span>
388         <span class="n">Add</span><span class="p">(</span><span class="s">&quot;three&quot;</span><span class="p">)</span> <span class="p">{</span>
389                 <span class="n">Add</span><span class="p">(</span><span class="s">&quot;3.1&quot;</span><span class="p">)</span>
390                 <span class="n">Add</span><span class="p">(</span><span class="s">&quot;3.2&quot;</span><span class="p">)</span>
391                 <span class="n">Add</span><span class="p">(</span><span class="s">&quot;3.3&quot;</span><span class="p">)</span>
392                 <span class="k">see</span> <span class="n">children</span>
393         <span class="p">}</span>
394         <span class="k">see</span> <span class="n">children</span>
395         <span class="n">oTree</span><span class="p">.</span><span class="n">children</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span> <span class="p">{</span>
396                 <span class="n">Add</span><span class="p">(</span><span class="s">&quot;2.1&quot;</span><span class="p">)</span> <span class="n">Add</span><span class="p">(</span><span class="s">&quot;2.2&quot;</span><span class="p">)</span> <span class="n">Add</span><span class="p">(</span><span class="s">&quot;2.3&quot;</span><span class="p">)</span> <span class="p">{</span>
397                         <span class="n">Add</span><span class="p">(</span><span class="s">&quot;2.3.1&quot;</span><span class="p">)</span> <span class="n">Add</span><span class="p">(</span><span class="s">&quot;2.3.2&quot;</span><span class="p">)</span> <span class="n">Add</span><span class="p">(</span><span class="s">&quot;test&quot;</span><span class="p">)</span>
398                 <span class="p">}</span>
399         <span class="p">}</span>
400         <span class="n">oTree</span><span class="p">.</span><span class="n">children</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span><span class="p">.</span><span class="n">children</span><span class="o">[</span><span class="mi">3</span><span class="o">]</span><span class="p">.</span><span class="n">children</span><span class="o">[</span><span class="mi">3</span><span class="o">]</span><span class="p">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;2.3.3&quot;</span><span class="p">)</span>
401 <span class="p">}</span>
402 <span class="k">see</span> <span class="n">copy</span><span class="p">(</span><span class="s">&quot;*&quot;</span><span class="p">,</span><span class="mi">60</span><span class="p">)</span> <span class="o">+</span> <span class="n">nl</span>
403 <span class="n">oTree</span><span class="p">.</span><span class="n">print</span><span class="p">()</span>
404 </pre></div>
405 </div>
406 <p>この章をご確認ください:</p>
407 <ul class="simple">
408 <li>StdLib 関数</li>
409 <li>StdLib クラス</li>
410 </ul>
411 </div>
412 <div class="section" id="ringlibsdl">
413 <span id="index-7"></span><h2>RingLibSDL<a class="headerlink" href="#ringlibsdl" title="このヘッドラインへのパーマリンク">¶</a></h2>
414 <p>Ring 1.0 では Allegro ゲームプログラミング・ライブラリ (RingAllegro) でゲームを作成できるようになりました。</p>
415 <p>Ring 1.1 では LibSDL (RingLibSDL) も使用可能です。</p>
416 <p>用例:</p>
417 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;libsdl.ring&quot;</span>
418
419 <span class="n">SDL_Init</span><span class="p">(</span><span class="n">SDL_INIT_EVERYTHING</span><span class="p">)</span>
420 <span class="n">win</span> <span class="o">=</span> <span class="n">SDL_CreateWindow</span><span class="p">(</span><span class="s">&quot;Hello World!&quot;</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">640</span><span class="p">,</span> <span class="mi">480</span><span class="p">,</span> <span class="n">SDL_WINDOW_SHOWN</span><span class="p">)</span>
421 <span class="n">SDL_Delay</span><span class="p">(</span><span class="mi">2000</span><span class="p">)</span>
422 <span class="n">SDL_DestroyWindow</span><span class="p">(</span><span class="n">win</span><span class="p">)</span>
423 <span class="n">SDL_Quit</span><span class="p">()</span>
424 </pre></div>
425 </div>
426 <p>RingLibSDL の章を参照してください。</p>
427 </div>
428 <div class="section" id="d">
429 <span id="index-8"></span><h2>デモプロジェクト - 2D ゲームエンジン<a class="headerlink" href="#d" title="このヘッドラインへのパーマリンク">¶</a></h2>
430 <p>最良実行性能を得るには C/C++ などでゲームエンジンを作成後にエンジン用の Ring クラスを実装します。</p>
431 <p>一般的な 2D ゲームの構造は単純明快であり、 Ring でゲームエンジンを作成しても十分高速です。</p>
432 <p>また、これは言語の概念として、オブジェクト指向プログラミング (OOP) によるオブジェクトの構築方法、
433 入れ子構造の宣言型プログラミングの用法、
434 または自然言語プログラミングによる強力なアクセス方法について学ぶための優れたデモプロジェクトです。</p>
435 <p>このプロジェクトでは最初の方法を選択します (入れ子構造の宣言型プログラミング)。</p>
436 <p>用例:</p>
437 <div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span> <span class="s">&quot;gameengine.ring&quot;</span>  <span class="c"># ゲームエンジンへ制御権を与えます。</span>
438
439 <span class="k">func</span> <span class="n">main</span>               <span class="c"># ゲームエンジンにより呼び出されます。</span>
440
441         <span class="n">oGame</span> <span class="o">=</span> <span class="k">New</span> <span class="n">Game</span>        <span class="c"># Game オブジェクトの作成</span>
442         <span class="p">{</span>
443                 <span class="n">title</span> <span class="o">=</span> <span class="s">&quot;My First Game&quot;</span>
444                 <span class="n">text</span> <span class="p">{</span>
445                         <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">50</span>
446                         <span class="n">animate</span> <span class="o">=</span> <span class="kp">false</span>
447                         <span class="n">size</span> <span class="o">=</span> <span class="mi">20</span>
448                         <span class="n">file</span> <span class="o">=</span> <span class="s">&quot;fonts/pirulen.ttf&quot;</span>
449                         <span class="n">text</span> <span class="o">=</span> <span class="s">&quot;game development using ring is very fun!&quot;</span>
450                         <span class="n">color</span> <span class="o">=</span> <span class="n">rgb</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>      <span class="c"># 配色 = 黒色</span>
451                 <span class="p">}</span>
452                 <span class="n">text</span> <span class="p">{</span>
453                         <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">150</span>
454                         <span class="c"># アニメーション部分 ======================================</span>
455                         <span class="n">animate</span> <span class="o">=</span> <span class="kp">true</span>                          <span class="c"># アニメーションの使用</span>
456                         <span class="n">direction</span> <span class="o">=</span> <span class="n">GE_DIRECTION_INCVERTICAL</span>    <span class="c"># y の増分</span>
457                         <span class="n">point</span> <span class="o">=</span> <span class="mi">400</span>             <span class="c"># y=400 になるまで継続</span>
458                         <span class="n">nStep</span> <span class="o">=</span> <span class="mi">3</span>               <span class="c"># 毎回 y+= 3 を行う</span>
459                         <span class="c">#==========================================================</span>
460                         <span class="n">size</span> <span class="o">=</span> <span class="mi">20</span>
461                         <span class="n">file</span> <span class="o">=</span> <span class="s">&quot;fonts/pirulen.ttf&quot;</span>
462                         <span class="n">text</span> <span class="o">=</span> <span class="s">&quot;welcome to the real world!&quot;</span>
463                         <span class="n">color</span> <span class="o">=</span> <span class="n">rgb</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">255</span><span class="p">)</span>    <span class="c"># 配色 = 青色</span>
464                 <span class="p">}</span>
465                 <span class="n">Sound</span> <span class="p">{</span>                                 <span class="c"># 音声の再生</span>
466                         <span class="n">file</span> <span class="o">=</span> <span class="s">&quot;sound/music1.wav&quot;</span>       <span class="c"># イベントループの開始</span>
467                 <span class="p">}</span>
468         <span class="p">}</span>                                       <span class="c"># イベントループの開始</span>
469 </pre></div>
470 </div>
471 <p>“デモプロジェクト - 2D ゲームエンジン”の章を参照してください。</p>
472 </div>
473 <div class="section" id="ringsqlite">
474 <span id="index-9"></span><h2>RingSQLite<a class="headerlink" href="#ringsqlite" title="このヘッドラインへのパーマリンク">¶</a></h2>
475 <p>ODBC 関数 (Ring 1.0 以降)、 SQLite 関数 (Ring 1.1 以降) を実装しました。これにより、各種データベース、および MySQL に標準対応しました。</p>
476 <p>用例:</p>
477 <div class="highlight-ring"><div class="highlight"><pre><span class="n">oSQLite</span> <span class="o">=</span> <span class="n">sqlite_init</span><span class="p">()</span>
478
479 <span class="n">sqlite_open</span><span class="p">(</span><span class="n">oSQLite</span><span class="p">,</span><span class="s">&quot;mytest.db&quot;</span><span class="p">)</span>
480
481 <span class="n">sql</span> <span class="o">=</span> <span class="s">&quot;CREATE TABLE COMPANY(&quot;</span>  <span class="o">+</span>
482          <span class="s">&quot;ID INT PRIMARY KEY     NOT NULL,&quot;</span> <span class="o">+</span>
483          <span class="s">&quot;NAME           TEXT    NOT NULL,&quot;</span> <span class="o">+</span>
484          <span class="s">&quot;AGE            INT     NOT NULL,&quot;</span> <span class="o">+</span>
485          <span class="s">&quot;ADDRESS        CHAR(50),&quot;</span> <span class="o">+</span>
486          <span class="s">&quot;SALARY         REAL );&quot;</span>
487
488 <span class="n">sqlite_execute</span><span class="p">(</span><span class="n">oSQLite</span><span class="p">,</span><span class="n">sql</span><span class="p">)</span>
489
490 <span class="n">sql</span> <span class="o">=</span> <span class="s">&quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) &quot;</span>  <span class="o">+</span>
491          <span class="s">&quot;VALUES (1, &#39;Mahmoud&#39;, 29, &#39;Jeddah&#39;, 20000.00 ); &quot;</span> <span class="o">+</span>
492          <span class="s">&quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) &quot;</span>  <span class="o">+</span>
493          <span class="s">&quot;VALUES (2, &#39;Ahmed&#39;, 27, &#39;Jeddah&#39;, 15000.00 ); &quot;</span>     <span class="o">+</span>
494          <span class="s">&quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)&quot;</span> <span class="o">+</span>
495          <span class="s">&quot;VALUES (3, &#39;Mohammed&#39;, 31, &#39;Egypt&#39;, 20000.00 );&quot;</span> <span class="o">+</span>
496          <span class="s">&quot;INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)&quot;</span> <span class="o">+</span>
497          <span class="s">&quot;VALUES (4, &#39;Ibrahim&#39;, 24, &#39;Egypt &#39;, 65000.00 );&quot;</span>
498
499 <span class="n">sqlite_execute</span><span class="p">(</span><span class="n">oSQLite</span><span class="p">,</span><span class="n">sql</span><span class="p">)</span>
500
501 <span class="n">aResult</span> <span class="o">=</span>  <span class="n">sqlite_execute</span><span class="p">(</span><span class="n">oSQLite</span><span class="p">,</span><span class="s">&quot;select * from COMPANY&quot;</span><span class="p">)</span>
502 <span class="k">for</span> <span class="n">x</span> <span class="k">in</span> <span class="n">aResult</span>
503         <span class="k">for</span> <span class="n">t</span> <span class="k">in</span> <span class="n">x</span>
504                 <span class="k">see</span> <span class="n">t</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span> <span class="o">+</span> <span class="n">nl</span>
505         <span class="k">next</span>
506 <span class="k">next</span>
507 <span class="k">see</span> <span class="n">copy</span><span class="p">(</span><span class="s">&quot;*&quot;</span><span class="p">,</span><span class="mi">50</span><span class="p">)</span>  <span class="o">+</span> <span class="n">nl</span>
508 <span class="k">for</span> <span class="n">x</span> <span class="k">in</span> <span class="n">aResult</span>
509         <span class="k">see</span> <span class="n">x</span><span class="o">[</span><span class="s">&quot;name&quot;</span><span class="o">]</span> <span class="o">+</span> <span class="n">nl</span>
510 <span class="k">next</span>
511 <span class="n">sqlite_close</span><span class="p">(</span><span class="n">oSQLite</span><span class="p">)</span>
512 </pre></div>
513 </div>
514 </div>
515 <div class="section" id="index-10">
516 <span id="id5"></span><h2>拡張機能に関するコード生成器の改善<a class="headerlink" href="#index-10" title="このヘッドラインへのパーマリンク">¶</a></h2>
517 <p>Ring へ新しいライブラリを追加するためにコード生成器 (Ring にて記述) を使用しています。</p>
518 <p>RingQt と RingAllegro (Ring 1.1 では RingLibSDL) はコード生成器で作成しました。</p>
519 <p>また、次の機能を追加しました。</p>
520 <ul class="simple">
521 <li>構造体メンバの設定と取得 (数値とポインタ)</li>
522 <li>定数の使用</li>
523 <li>コード生成器の改善</li>
524 </ul>
525 <p>コード生成器の章を参照してください。</p>
526 </div>
527 <div class="section" id="self">
528 <span id="index-11"></span><h2>新しい属性を定義するためにクラス範囲で Self.属性 の使用<a class="headerlink" href="#self" title="このヘッドラインへのパーマリンク">¶</a></h2>
529 <p>新しい属性を定義するためにクラス範囲 (クラス名の後、およびメソッドの前) で
530 Self.属性 を使えます。</p>
531 <div class="highlight-ring"><div class="highlight"><pre><span class="k">class</span> <span class="n">Person</span>
532         <span class="n">name</span>            <span class="c"># グローバル変数ではない場合は、属性名を定義します。</span>
533         <span class="n">address</span>
534         <span class="n">phone</span>
535
536 <span class="k">class</span> <span class="n">person2</span>
537         <span class="n">self</span><span class="p">.</span><span class="n">name</span>       <span class="c"># 必ず属性を定義してください。</span>
538         <span class="n">self</span><span class="p">.</span><span class="n">address</span>
539         <span class="n">self</span><span class="p">.</span><span class="n">phone</span>
540 </pre></div>
541 </div>
542 </div>
543 <div class="section" id="this">
544 <span id="index-12"></span><h2>クラスのメソッド内で入れ子の括弧で This.属性 の使用<a class="headerlink" href="#this" title="このヘッドラインへのパーマリンク">¶</a></h2>
545 <p>メソッドの内から別のオブジェクトへアクセスするために入れ子の括弧 { } を使えます。
546 この場合、括弧内、および Self で {} でアクセスするオブジェクトを指定するときに
547 現在のオブジェクトの有効範囲は変更されます。この場合において
548 This.属性 および This.属性() は現在のクラスから作成される
549 オブジェクトへアクセスするために使えます。</p>
550 <p>詳細情報はオブジェクト指向プログラミングの章を参照してください。</p>
551 <p>また RingQt (GUI) で開発した Weight History アプリケーションも併せてご確認ください。</p>
552 </div>
553 <div class="section" id="index-13">
554 <span id="id6"></span><h2>取扱説明書の増補<a class="headerlink" href="#index-13" title="このヘッドラインへのパーマリンク">¶</a></h2>
555 <p>Ring 1.1 の取扱説明書 (800 ページ) は Ring 1.0 の取扱説明書 (340 ページ) よりも改善しています。</p>
556 <p>良質な知識を理解して頂きたく言語関連などの章を多数加筆しました。</p>
557 <ul class="simple">
558 <li>言語リファレンス</li>
559 <li>スコープの規則</li>
560 <li>よくある質問と回答集</li>
561 </ul>
562 <p>など多岐にわたります!</p>
563 </div>
564 </div>
565
566
567           </div>
568         </div>
569       </div>
570       <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
571         <div class="sphinxsidebarwrapper"><h3>ページの内容</h3>
572 <ul>
573 <li><a class="reference internal" href="#">Ring 1.1 の変更履歴</a><ul>
574 <li><a class="reference internal" href="#index-1">新機能と変更リスト</a></li>
575 <li><a class="reference internal" href="#index-2">自然言語プログラミングへの対応を改善</a></li>
576 <li><a class="reference internal" href="#ring-ringo">Ring オブジェクトファイル (*.ringo) の生成と実行</a></li>
577 <li><a class="reference internal" href="#index-4">シンタックスの柔軟性と出入力および制御構造の様々な記法</a></li>
578 <li><a class="reference internal" href="#index-5">新しい関数と変更</a></li>
579 <li><a class="reference internal" href="#ring-stdlib">Ring で記述された StdLib 関数とクラス</a></li>
580 <li><a class="reference internal" href="#ringlibsdl">RingLibSDL</a></li>
581 <li><a class="reference internal" href="#d">デモプロジェクト - 2D ゲームエンジン</a></li>
582 <li><a class="reference internal" href="#ringsqlite">RingSQLite</a></li>
583 <li><a class="reference internal" href="#index-10">拡張機能に関するコード生成器の改善</a></li>
584 <li><a class="reference internal" href="#self">新しい属性を定義するためにクラス範囲で Self.属性 の使用</a></li>
585 <li><a class="reference internal" href="#this">クラスのメソッド内で入れ子の括弧で This.属性 の使用</a></li>
586 <li><a class="reference internal" href="#index-13">取扱説明書の増補</a></li>
587 </ul>
588 </li>
589 </ul>
590
591
592   <h4>前のトピックへ</h4>
593   <p class="topless"><a href="whatisnew2.html"
594                         title="前の章へ">Ring 1.2 の変更履歴</a></p>
595   <h4>次のトピックへ</h4>
596   <p class="topless"><a href="sourcecode.html"
597                         title="次の章へ">ソースコードからのビルド方法</a></p>
598   <div role="note" aria-label="source link">
599     <h3>このページ</h3>
600     <ul class="this-page-menu">
601       <li><a href="_sources/whatisnew.txt"
602             rel="nofollow">ソースコードを表示</a></li>
603     </ul>
604    </div>
605       
606 <form action="search.html" method="get">
607   <input type="text" name="q" placeholder="Search" />
608   <input type="hidden" name="check_keywords" value="yes" />
609   <input type="hidden" name="area" value="default" />
610 </form>
611       
612         </div>
613       </div>
614       <div class="clearer"></div>
615     </div>
616 <footer class="footer">
617   <p class="pull-right">
618     <a href="_sources/whatisnew.txt"
619        rel="nofollow">Page Source</a> &nbsp;
620     <a href="#">Back to Top</a></p>
621   <p>
622     &copy; Copyright 2016-2020, Ring Team.<br/>
623     Created using <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> 1.3.6. / astropy-sphinx-theme 1.1 (isVowel)
624   </p>
625 </footer>
626   </body>
627 </html>