仕事が期をまたぐ忙しい時期に入ってしまった…
加えて引越しもあるのでコンパイラは10月下旬に入りそうですorz
その代わりといってはなんですが、Mystic#の新しい構文および拡張された構文、
およびオブジェクト指向に関する機能の一部の続きを1つ紹介します。
・プロパティ new!!
メソッドはそのオブジェクトが持つ機能の処理を行うものであるのに対し、
プロパティはオブジェクトの性質や状態を取得または設定するためのものです。
#property ディレクティブが新たに追加され、プロパティ名から右へ
インデックス用引数の型、ゲッター、セッター、プロパティの型、となります。
ゲッターおよびセッターのどちらかを省略すると、書き込み専用・読み取り専用にできます。
上記のプロパティを使用する場合は以下のようなコードになります。
加えて引越しもあるのでコンパイラは10月下旬に入りそうですorz
その代わりといってはなんですが、Mystic#の新しい構文および拡張された構文、
およびオブジェクト指向に関する機能の一部の続きを1つ紹介します。
・プロパティ new!!
メソッドはそのオブジェクトが持つ機能の処理を行うものであるのに対し、
プロパティはオブジェクトの性質や状態を取得または設定するためのものです。
#class [TestClass]
#property [IsTest, *~getIsTest, , Boolean] As Global
#property [Items, Integer, *~getItems, *~setItems, String] As Global
Var String [_item{}] As Local
*~getIsTest
Return [True]
MethodReturn
*~getItems
Return [_item{Argument0}]
MethodReturn
*~setItems
_item{Argument0} = PropValue
MethodReturn
#property [IsTest, *~getIsTest, , Boolean] As Global
#property [Items, Integer, *~getItems, *~setItems, String] As Global
Var String [_item{}] As Local
*~getIsTest
Return [True]
MethodReturn
*~getItems
Return [_item{Argument0}]
MethodReturn
*~setItems
_item{Argument0} = PropValue
MethodReturn
#property ディレクティブが新たに追加され、プロパティ名から右へ
インデックス用引数の型、ゲッター、セッター、プロパティの型、となります。
ゲッターおよびセッターのどちらかを省略すると、書き込み専用・読み取り専用にできます。
上記のプロパティを使用する場合は以下のようなコードになります。
#program [test]
#method [Main, String{}, *~Main, Integer] As Global
*~Main
Var TestClass [tCls]
Var Boolean [isTest]
Var String [item]
tCls = CreateObject[TestClass]
isTest = tCls.IsTest //読み取り専用プロパティ
item = tCls.Items{3} //インデックス付プロパティの取得
item = item.Trim
tCls.Items{4} = item //インデックス付プロパティへの設定
MethodReturn
#method [Main, String{}, *~Main, Integer] As Global
*~Main
Var TestClass [tCls]
Var Boolean [isTest]
Var String [item]
tCls = CreateObject[TestClass]
isTest = tCls.IsTest //読み取り専用プロパティ
item = tCls.Items{3} //インデックス付プロパティの取得
item = item.Trim
tCls.Items{4} = item //インデックス付プロパティへの設定
MethodReturn