HSPで型を限定? - HSPTV!掲示板	
HSPTV!掲示板
スレッド一覧 | 新規書き込み | 新着一覧 | 使い方 | 過去ログ
未解決 解決 停止 削除要請
2010
0514 WHITE HSPで型を限定? 4
WHITE
2010/5/14(Fri) 20:01:54|NO.32646
ＨＳＰで変数が整数型、実数型の双方に変わらないようにすることってできますか？？
具体的には
number=2
number=2.0 //ここでエラー
mes number //　2　と出力される
逆に
value=2.0
value=2 //ここでエラー
mes value // 2.000・・・　と出力される
みたいな
この記事に返信する
KA
2010/5/14(Fri) 20:38:35|NO.32647
そういう柔軟性？が、ＨＳＰの使いやすい所と思いますが・・
そうしたいのであれば、

number=2
number=1*2.0
mes number
逆に
value=2.0
value=1.0*2
mes value
みたいに、常に最初を整数か実数の”１”でかけるようにしては？
チェホ
2010/5/14(Fri) 21:12:51|NO.32648
配列にすれば、自動的に怒られるよ〜

dim A, 2
A ( 0 ) = 1
A ( 1 ) = 1.0
これで「異なる型の〜」みたいにエラーが出る。
これの重要なところは、（超重要）宣言したときのdimやddimに関係なく、
配列の０番目の数値によって判断されるらしいところです。

//「整数」で宣言し、
//「０」番に「整数」を入れてから、
//「１」番に「実数」を入れる。
dim A, 2
A ( 0 ) = 0
A ( 1 ) = 0.0;ここでエラー

//「整数」で宣言し、
//「０」番に「実数」を入れてから、
//「１」番に「整数」を入れる。
dim A, 2
A ( 0 ) = 0.0
A ( 1 ) = 1;ここでエラー

//「整数」で宣言し、
//「１」番に「整数」を入れて、
//「０」番に「実数」を入れてから、
//「１」番に「整数」を入れる。
dim A, 2
A ( 1 ) = 1
A ( 0 ) = 0.0;エラーしない！！
A ( 1 ) = 1;逆にこれがエラー！！！
活用方法は次で。
チェホ
2010/5/14(Fri) 21:30:16|NO.32649

//				変数専用モジュールを作る。
#module			変数モジュール
	//				変数初期化関数
	#deffunc		変数初期化
		dim				整数変数
		dim				実数変数;あえて整数型で宣言してるのは、拡張マクロがなくてもいいように。
		整数変数		= 0
		実数変数		= 0.0
	return
	//				ここから変数名を宣言
	//				整数
	#enum global	整数_A = 1;１番から始めるのは、０番は型の限定に使っているため。
	#enum global	整数_B
	#enum global	整数_C
	//				実数
	#enum global	実数_D = 1
	#enum global	実数_E
	#enum global	実数_F
	//				ここからマクロを登録
	//				整数
	#define global	A	整数変数@変数モジュール(整数_A)
	#define global	B	整数変数@変数モジュール(整数_B)
	#define global	C	整数変数@変数モジュール(整数_C)
	//				実数
	#define global	D	実数変数@変数モジュール(実数_D)
	#define global	E	実数変数@変数モジュール(実数_E)
	#define global	F	実数変数@変数モジュール(実数_F)
#global
変数初期化

//ここから自由に書いていいよ〜
A = 1 ;例
;D = 1 ; 有効にするとエラーが出るよ〜
↑のモジュールでは、
整数変数 A, B, C
実数変数 D, E, F
を宣言してる。もちろんスクリプトエディタにぶっこめばそのまま動く。
欠点としては、変数の宣言はこのモジュール内で最初にしておかなければならない事。
それすらも自動化するコンパイラもどきも作ってあるけど、それは企業秘密なのです。
WHITE
2010/5/15(Sat) 10:57:24|NO.32650
なるほどぉ、ＨＳＰでもできるんですね＾＾
とても参考になりました、ありがとうございました☆
トップ | HSP3ダウンロード | HSPTVで遊ぶ | HSPで作る | サイト情報 | プライバシーポリシー | お問合せ
ONION software Copyright 1997-2018(c) All rights reserved.
