messyなkitchenなブログ

ただひたすらに散らかった台所や人生やその他を晒す。

MENU

マクロの扱い [脱W〇rd, 脱E×cel, 脱@st@h : #14]

かなり久しぶりに PlantUML を触ってみました。
いつの間にかマクロの使い方について仕様変更があったっぽいのでメモ。

仕様変更

こんな記述が。

!define!definelong は使用しないでください。 代わりに !function!procedure もしくは変数定義を使用します。

ということで、試してみました。

従来通りの define, definelong

hide footbox

' マクロ定義
!define WHO(x) actor x

' 複数行のマクロ定義
!definelong HELLO(x, y)
x -> y : Hello!
y -> x : ..Bye
!enddefinelong

WHO(Alice)
WHO(Bob)
HELLO(Bob, Alice)

こんな感じの絵ができます。

いつものアリスとボブ。

function と procedure

上記に加えて、新仕様の return関数プロシージャ を追記してみます。

' return関数
!function $double($a)
!return $a + $a
!endfunction

' プロシージャ
!procedure $msg($src, $dst, $txt)
  $src --> $dst : $txt
!endprocedure

$msg(Alice, Bob, $double("帰れ"))

こんな感じになります。

アリスはいつもボブに冷たい。

まとめ

function procedure はちゃんと使えそうだし、難しいこともなさそうです。
今まで書いていたコードで使っていた define definelong がいつまでサポートされるのかわからないので、 今後書くコードでは function procedure を使うように変更していきます。