Mystic#なブログ

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

Mystic# 紹介 その3

2010-06-22 11:39:30 | Mystic#
次は、Mystic#の新しい構文および拡張された構文の一部を紹介します。

・例外処理 update!
従来にもTry-Catch-Finallyは使用できましたが、Mystic#では
例外オブジェクトの受け取りが可能となりました。

#program [Sample]

#method [Main, String, *~Main, Integer] As Global

*~Main
Var Integer [a, b, c]
Var Exception [ex]

  Try
    a = 4
    b = 0
    
    c = a b //ここで0除算例外が発生
  Catch [ex]
    Console.WriteLine [ex.Message]
  Finally
    Console.WriteLine [c]
    Console.ReadKey [True]
  End Try
MethodReturn

また、Catch句に限ってインライン型宣言ができます。
#program [Sample]

#method [Main, String, *~Main, Integer] As Global

*~Main
Var Integer [a, b, c]

  Try
    a = 4
    b = 0
    
    c = a b //ここで0除算例外が発生
  Catch [Exception ex]
    Console.WriteLine [ex.Message]
  Finally
    Console.WriteLine [c]
    Console.ReadKey [True]
  End Try
MethodReturn




・行の継続 new!!
従来は行は継続できませんでした。そのため、1行で非常に長いコードを記述するなど
可読性が落ちていました。Mystic#では、VisualBasicのように
_ (アンダースコア、アンダーバー)を使用することで行の継続を行うことができます。

#program [Sample]

#method [Main, String, *~Main, Integer] As Global
#method [Test, String, String, String, *~Test] As Local

*~Main
  Test ["これは", _
     "テスト", _
     "です。"]
  
  Console.ReadKey [True]
MethodReturn

*~Test
  Console.WriteLine ["{0}{1}{2}", _
            Argument0, _
            Argument1, _
            Argument2]
MethodReturn


行の継続が正常に動作しています。


・ヒアドキュメント new!!
従来は文字列も行の継続はできませんでした。
Mystic#は、""(ダブルクォーテーション)記号で括られる全ての文字及び改行が
文字列として扱われます(エスケープシーケンスは従来通り適用されます)

また、文字列の先頭に $ 記号を付加することで、インデントを無視した
ヒアドキュメントを記述できます。
#program [Sample]

#method [Main, String, *~Main, Integer] As Global

*~Main
  Console.WriteLine [ _
"あいうえお
  かきくけこ
    さしすせそ"
]

  Console.WriteLine [ _
$"あいうえお
  かきくけこ
    さしすせそ"
]

  Console.ReadKey [True]
MethodReturn