Mystic#なブログ

MysticSLの後継言語、Mystic#について話します

Mystic# 紹介 その6

2010-08-10 13:41:14 | Mystic#
仕事が期をまたぐ忙しい時期に入ってしまった…
加えて引越しもあるのでコンパイラは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 ディレクティブが新たに追加され、プロパティ名から右へ
インデックス用引数の型、ゲッター、セッター、プロパティの型、となります。
ゲッターおよびセッターのどちらかを省略すると、書き込み専用・読み取り専用にできます。

上記のプロパティを使用する場合は以下のようなコードになります。
#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