Ring 1.6 での変更点は?

Ring 1.6 公開版の新機能と変更点を学びます。

新機能と変更一覧

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 へ追加しました。

開発者: アーメド・ハッサウナ

Employee サンプル

新ツール - Ring2EXE

現在は、スグレモノである RingEXE (Ring 1.6 以降) があります。

Ring2EXE (Ring にて記述) で Windows, Linux および MacOS 用のアプリケーションを手軽に配布できます。

詳細情報は本取扱説明書の「Ring2EXE による Ring アプリケーションの配布方法」をお読みください。

Android 版 Ring の改善

複数のソースコードファイル (*.ring) ではなく Ring オブジェクトファイル (*.ringo) を使用するために Android 版 Ring (RingQt の使用) を更新しました。

このスクリーンショットは Android 版 Cards ゲームのビルドに関する用例です。

cards.ring の代わりに cards.ringo を使用しています。

大規模プロジェクト (大量の *.ring ファイル) から構成されている場合は、単体形式の *.ringo ファイルのみ使用します。

Android 版 Ring の改善

Qt プロジェクトでモバイル用 RingQt アプリケーションの配布準備をするには Ring2EXE を使用してください。

用例①

ring2exe cards.ring -dist -mobileqt

用例②

ring2exe formdesigner.ring -dist -mobileqt
Android 版フォームデザイナー

新ツール - 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

詳細情報は取扱説明書の 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 ノートパッドにあります。

  1. アプリケーションの実行時にメインファイルの自動設定 (メインファイルボタンを使用)。
  2. メインファイル - 実行前の自動保存。
  3. GUI アプリケーション実行時 - 実行結果ウィンドウで入力用にテキストボックスを使用した場合はフォーカスを変更しないようにしました。
  4. ボタン、およびオプションからウェブアプリケーションを実行できるようになりました。
Ring ノートパッド - ウェブアプリケーションの実行 - スクリーンショット 1

Ring 1.6 から Windows ユーザー用に Apache ウェブサーバーが添付されています!

設定は一切不要で指定フォルダからウェブアプリケーションを実行できます。

Ring ノートパッド - ウェブアプリケーションの実行 - スクリーンショット 2
  1. ツール - オペレーティングシステム - ターミナル (コマンドプロンプト) & ファイルマネージャー (エクスプローラ)
Ring ノートパッド - ツール - ターミナル - スクリーンショット 1

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

Ring ノートパッド - ツール - ターミナル - スクリーンショット 2
  1. 拡張子 *.sh と *.batへの対応
  2. 新しいメニュー: 配布
Ring ノートパッド - 配布

RingQt の改善

このような更新が RingQt にあります。

  1. QAllEvents - getkeytext() メソッド
  2. QSQLQuery - exec_2() メソッド
  3. QDockWidget イベント
  4. AppFile() 関数
  5. IsMobile() 関数
  6. QRegion クラス
  7. QCoreApplication クラス

StdLib の改善

このような更新が StdLib にあります。

  1. Factors() 関数の更新 (表示を行わずに出力を返します)

  2. Palindrome() 関数の更新 (表示を行わずに出力を返します)

  3. stdlibcore.ring を使用すると StdLib 関数を使用できます (クラスはありません)。

    これはスタンドアローン型のコンソールアプリケーションを作成する場合に便利です。

    理由としては stdlib.ring (関数とクラス) を使用すると RingLibCurl, RingOpenSSL などのライブラリが読み込まれるからです。

  4. 新しい関数

  • SystemSilent(cCommand) : 実行結果を表示せずにシステムをコマンド実行します。
  • OSCreateOpenFolder(cFolder) : フォルダの作成後に、現在のフォルダを作成した新しいフォルダへ変更します。
  • OSCopyFolder(cParentFolder,cFolderNameToCopy) : 現在のディレクトリへフォルダをコピーします。
  • OSDeleteFolder(cFolder) : フォルダの削除
  • OSCopyFile(cFileName) : 現在のディレクトリへファイルをコピーします。
  • OSDeleteFile(cFileName) : ファイルの削除
  • OSRenameFile(cOldFileName,cNewFileName) : ファイル名変更

Ring VM の改善

このような更新が Ring VM にあります。

  1. 式において getter メソッドの複数使用に対応
  2. This と Self を Setter/Getter メソッドを呼び出さずに Setter/Getter/Normal メソッドで使用できるようにするための対応
  3. TempName() 関数の更新 (コードの改善)
  4. ExeFileName() 関数の更新 (コードの改善)
  5. Private 属性 - クラス範囲における再利用の対応 (Private キーワードの後に)
  6. Ring API : ring_scanner_runobjstring()
  7. ring_state_setvar() 関数

RingREPL の改善

このような更新が RingREPL にあります。

  1. RingREPL はコマンドラインの仮引数でスタイルを決定します。
  2. 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