#deffunc

新規命令を登録する

#deffunc p1 p2 p3,…

p1      : 割り当てられる命令の名前
p2 p3~ : パラメータータイプ名・エイリアス名

解説

ユーザーによる新規命令を登録します。
p1に新規命令の名前を、p2以降に呼び出しパラメータタイプを指定します。
#deffunc命令で定義した名前をスクリプト内で命令として使用することが可能になります。

新規命令は、#deffuncで指定された行以降が実行される内容になります。
実行は gosub命令と同じくサブルーチンジャンプとして行なわれ、return命令でもとの実行位置に戻ります。

例 :
	#deffunc test int a
	mes "パラメーター="+a
	return

追加された新規命令ではパラメータを受け取ることができるようになります。
それぞれのパラメータには、パラメータタイプとエイリアス名の指定が可能です。指定するパラメータタイプには以下のものがあります。

   int     :  整数値
   var     :  変数(配列なし)
   array   :  変数(配列あり)
   str     :  文字列
   double  :  実数値
   label   :  ラベル
   local   :  ローカル変数

エイリアス名は、渡されたパラメーターの内容を示すもので、変数とほとんど同じ感覚で使用することができます。
varとarrayの使い分けには注意が必要なほか、 ローカル変数を示すlocalタイプは特殊な用途となります。
詳しくは、プログラミングマニュアル(hspprog.htm)のモジュール項目を参照してください。

特殊な用途として、パラメータータイプの替わりに「onexit」を記述することで、クリーンアップ命令として登録することができます。クリーンアップ命令は、HSPスクリプト実行の終了時に自動的に呼び出されます。 

例:
	#deffunc 名前 onexit

モジュールによって機能を拡張した場合などにその後始末、システムやメモリの解放などを行なうために利用することができます。 

新規命令の名称は、通常すべてのモジュール空間、グローバル空間で共有されます。
ただし、local指定の後に名称を指定した場合は、モジュール固有のものとして扱われます。

例 :
	#module user
	#deffunc local test int a
	mes "パラメーター="+a
	return
	#global
	test@user 5

これは、モジュール内でのみ使用される命令を定義する場合などに使用することができます。
local指定により登録された名称は、必ず「名称@モジュール名」の形式で呼び出す必要があります。

関連項目

#globalモジュールの終了
#moduleモジュールの開始
#modfunc新規命令を割り当てる
#modcfunc新規関数を割り当てる
#modinitモジュール初期化処理の登録
#modtermモジュール解放処理の登録
mref特殊なメモリを変数に割り当てる

サンプル逆引き (25)

atk01.hsp
atk02.hsp
atk03.hsp
d3m_techdemo.hsp
defcfunc.hsp
demo.hsp
elm2d_edit.hsp
ene01.hsp
gblur.hsp
hsplogo.hsp
hsptv_test2.hsp
hsptv_test3.hsp
macro.hsp
mapedit.hsp
modtest2.hsp
modtest3.hsp
modtest4.hsp
obaqme.hsp
sample3.hsp
sample4.hsp
sendmail.hsp
shoot.hsp
sndedit.hsp
test1.hsp
yopparai.hsp

情報

バージョン3.5
作成日2017/09/13
著作者onitama
URLhttp://hsp.tv/
備考ver3.5標準命令
タイプ内蔵命令
グループプリプロセッサ命令
対応環境
  • Windows 版 HSP
  • コマンドライン版 HSP
  • HSPLet
移植のヒントHSPLet時、引数の型は str/int/double/var/array のみサポートされています。
local などは指定できません。
hs ファイルhsphelp\i_prep.hs