Ring 1.6 の改訂履歴¶
Ring 1.6 (2017年11月30日) の新機能と変更点です。
新機能と変更リスト¶
Ring 1.6 の新機能!
Employee アプリケーション
新ツール : Ring2EXE
Android 版 Ring の改善
新ツール : Folder2qrc
Ring ビルド用スクリプトの改善
RingConsoleColors 拡張機能
RingMurmurHash 拡張機能
Ring ノートパッドの改善
RingQt の改善
StdLib の改善
Ring VM の改善
RingREPL の改善
char(9) の代わりに Tab を使うには
CR をキャリッジリターンとして使うには
! 演算子を not として使うには
&& および || 演算子の用法
式の表示後に ? で改行するには
Employee アプリケーション¶
Employee アプリケーションを ring/applications へ追加しました。
開発者: アーメド・ハッサウナ

新ツール - Ring2EXE¶
現在は、スグレモノである RingEXE (Ring 1.6 以降) があります。
Ring2EXE (Ring にて記述) で Windows, Linux および macOS 用のアプリケーションを手軽に配布できます。
詳しくは「Ring アプリケーションの配布方法 (Ring 1.6 以降)」を参照してください。
Android 版 Ring の改善¶
複数のソースコードファイル (*.ring) ではなく Ring オブジェクトファイル (*.ringo) を使用するために Android 版 Ring (RingQt の使用) を更新しました。
このスクリーンショットは Android 版 Cards ゲームのビルドに関する用例です。
cards.ring ではなく cards.ringo を使用します。
大規模プロジェクト構成 (大量の *.ring ファイル) では、 *.ringo ファイルのみ使います。

Qt プロジェクトでモバイル用 RingQt アプリケーションの配布準備をするには Ring2EXE を使用してください。
用例①
ring2exe cards.ring -dist -mobileqt
用例②
ring2exe formdesigner.ring -dist -mobileqt

新ツール - Folder2qrc¶
大量の画像とファイルから構成される大規模 RingQt プロジェクトでは、モバイル・アプリケーション配布時にリソースファイル (*.qrc) へファイルを必ず追加してください。
Ring 1.6 以降では Folder2qrc ツールにより、一つずつファイルを追加する必要がなくなるので時間の節約になります。
用例:
folder2qrc formdesigner.ring
アプリケーションフォルダに移動している間に、メインソースファイルの決定をするために Folder2qrc は現在のフォルダとサブフォルダにある全てのファイルを確認します。 そして mainfile.ringo の後にリソースファイルを追加します (この用例は formdesigner.ringo です)。
出力ファイル : project.qrc
ファイルを開く、または削除するためにリソースは不要です!
Ring ビルド用スクリプトの改善¶
Ring 1.6 ではソースコードから Ring のビルドを行うためのスクリプトを改善しました。
この更新は 32bit と 64bit システムの Windows, Linux (Ubuntu, Fedora) および macOS で検証済みです。
Windows 用のスクリプトでは Visual Studio のバージョンを基に Visual C/C++ コンパイラを検出するために更新されました。
RingConsoleColors 拡張機能¶
RingConsoleColors 拡張機能でコンソールアプリケーションの配色を手軽に変更できます。

詳しくは「RingConsoleColors 関数リファレンス」を参照してください。
RingMurmurHash 拡張機能¶
Ring 1.6 には RingMurmurHash 拡張機能があります!
開発者: ハッサン・アーメド
用例:
load "murmurhashlib.ring"
key = "Ring Language"
see murmurhash3_x86_32(key, 0, 0) + nl // 実行結果: 1894444853
see murmurhash3_x86_32(key, 0, 1) + nl // 実行結果: 70eaef35
詳しくは「RingMurmurHash 関数リファレンス」を参照してください。
Ring ノートパッドの改善¶
Ring ノートパッドを更新しました。
アプリケーションの実行時にメインファイルの自動設定 (メインファイルボタンを使用)。
メインファイル - 実行前の自動保存。
GUI アプリケーション実行時 - 実行結果ウィンドウで入力用テキストボックスの使用時はフォーカスを変更しないようにしました。
ボタン、およびオプションからウェブアプリケーションを実行できるようになりました。

Ring 1.6 から Windows ユーザー用に Apache ウェブサーバーが添付されています!
設定は一切不要で指定フォルダからウェブアプリケーションを実行できます。

ツール - オペレーティングシステム - ターミナル (コマンドプロンプト)、ファイルマネージャー (エクスプローラ)

これにより、アプリケーションフォルダからコマンドプロンプト、またはエクスプローラを手軽に開けます。

拡張子 *.sh と *.batへの対応
新しいメニュー: 配布

RingQt の改善¶
RingQt を更新しました。
QAllEvents - getkeytext() メソッド
QSQLQuery - exec_2() メソッド
QDockWidget イベント
AppFile() 関数
IsMobile() 関数
QRegion クラス
QCoreApplication クラス
StdLib の改善¶
StdLib を更新しました。
Factors() 関数の更新 (表示を行わずに出力を返します)
Palindrome() 関数の更新 (表示を行わずに出力を返します)
stdlibcore.ring で StdLib 関数を使えます (クラスはありません)。
これはスタンドアローン型のコンソールアプリケーションを作成する場合に便利です。
stdlib.ring (関数とクラス) は RingLibCurl, RingOpenSSL などのライブラリを読み込みます。
新しい関数
SystemSilent(cCommand) : 実行結果を表示せずにシステムをコマンド実行します。
OSCreateOpenFolder(cFolder) : フォルダの作成後に、現在のフォルダを作成した新しいフォルダへ変更します。
OSCopyFolder(cParentFolder,cFolderNameToCopy) : 現在のディレクトリへフォルダをコピーします。
OSDeleteFolder(cFolder) : フォルダの削除
OSCopyFile(cFileName) : 現在のディレクトリへファイルをコピーします。
OSDeleteFile(cFileName) : ファイルの削除
OSRenameFile(cOldFileName,cNewFileName) : ファイル名変更
Ring VM の改善¶
Ring VM を更新しました。
式において getter メソッドの複数使用に対応
This と Self を Setter/Getter メソッドを呼び出さずに Setter/Getter/Normal メソッドで使用できるようにするための対応
TempName() 関数の更新 (コードの改善)
ExeFileName() 関数の更新 (コードの改善)
Private 属性 - クラス範囲における再利用の対応 (Private キーワードの後に)
Ring API : ring_scanner_runobjstring()
ring_state_setvar() 関数
RingREPL の改善¶
RingREPL を更新しました。
RingREPL はコマンドラインの仮引数でスタイルを決定します。
Ring ノートパッドのスタイルに基づき RingREPL のスタイルを設定します。
char(9) の代わりに Tab を使うには¶
Tab 変数は char(9) の代わりに使用するために定義済みです。
用例①:
see :one + nl + tab + :two + nl + tab + tab + :three
実行結果:
one
two
three
変数を別の値へ変更できます。
用例②:
tab = " "
see :one + nl + tab + :two + nl + tab + tab + :three
実行結果:
one
two
three
CR をキャリッジリターンとして使うには¶
この用例では、十秒間に同じ行で 1 ~ 10 まで数えます。
load "stdlibcore.ring"
for x = 1 to 10 see x sleep(1) see cr next
! 演算子を not として使うには¶
Ring には = と != があります。
しかし、論理演算子には and, or, そして not があります。
さら、 ! 演算子を not として使えます。
用例:
if ! false
see "True!" + nl
ok
実行結果:
True!
&& および || 演算子の用法¶
このようなキーワードが Ring の論理演算子としてあります。
and
or
not
また、このような演算子もあります。
&&
||
!
用例:
if one() and two()
see "Test1 - Fail" + nl
else
see "Test1 - Pass" + nl
ok
if two() or one()
see "Test2 - Pass" + nl
else
see "Test2 - Fail" + nl
ok
if one() && two()
see "Test3 - Fail" + nl
else
see "Test3 - Pass" + nl
ok
if two() || one()
see "Test4 - Pass" + nl
else
see "Test4 - Fail" + nl
ok
func one return True
func two return False
実行結果:
Test1 - Pass
Test2 - Pass
Test3 - Pass
Test4 - Pass
? 演算子で式の表示後に改行するには¶
式の表示後に改行することは一般的です。これは ? 演算子で実現できます!
用例:
? "Hello, World!"
for x = 1 to 10
? x
next
実行結果:
Hello, World!
1
2
3
4
5
6
7
8
9
10