文字列を評価し値を返します。式や文を文字列として受け取り、実行するための関数です。
- 構文
- void = EVAL( 文字列 )
- 引数
- 文字列 (String)必須
- 評価(実行)する文字列
- 戻り値
- 結果得られた値を返す
A = Bは比較演算として処理、代入式の場合はA := Bとする
使い方
比較演算
文字列で与えられた式を評価し結果をブール値で返します。
以下はaに1を代入し、EVAL関数で比較を行い結果をブール値で返します。
使える比較演算子は<=、<、>=、>、=、<>です。詳細は演算子の優先順位(比較演算子)を参照。
DIM a = 1
PRINT EVAL("a=1") // 等しい
PRINT EVAL("a<=1") // 以下
PRINT EVAL("a<1") // より小さい
PRINT EVAL("a>=1") // 以上
PRINT EVAL("a>1") // より大きい
PRINT EVAL("a<>1") // 等しくない
- 結果
True True False True False False
複数の条件を書く場合、論理演算子を使うことで記述できます。詳細は演算子の優先順位(論理演算子)を参照。
論理演算子を使用したときの戻り値はDouble型です。
DIM a = 1
DIM b = 2
PRINT EVAL("a=1 AND b=2")
PRINT EVAL("a=1 OR b=2")
PRINT EVAL("a=1 XOR b=2")
- 結果
1 1 0
論理演算子を使うとEVAL関数の戻り型がDouble型になります。True、Falseの判定をするには問題ありませんが、ブール型で取得したい場合は、VARTYPE関数で変換します。
DIM a = 1
DIM b = 2
PRINT VARTYPE(EVAL("a=1 AND b=2"), VAR_BOOLEAN)
PRINT VARTYPE(EVAL("a=1 OR b=2"), VAR_BOOLEAN)
PRINT VARTYPE(EVAL("a=1 XOR b=2"), VAR_BOOLEAN)
- 結果
True True False
代入演算
変数に値を代入するには:=を使います。変数はEVAL関数よりも前に宣言しておく必要があります。
DIM a
EVAL("a:=1")
PRINT a
- 結果
1
EVAL関数を使うと予約語や定数にも代入できてしまうので注意が必要です。
以下は予約語であるTRUEにFALSEを代入します。
PRINT TRUE
EVAL("TRUE:=FALSE")
PRINT TRUE
- 結果
True False
以下はpiに円周率の値を定数として宣言した後、EVAL関数で書き換えてます。
CONST pi = ARCCOS(0) * 2
PRINT pi
EVAL("pi:=3")
PRINT pi
- 結果
3.14159265358979 3
プログラム実行例
入力された文字列の計算をする
結果
INPUT:10>a=2
INPUT:10>b=3
INPUT:10>a*b
6
使用関数
CLKITEMで操作できる項目を取得
HASHTBL variable
DIM array[-1]
DIM res = EMPTY
WHILE TRUE
DIM %val% = ""
FOR i = 0 TO LENGTH(variable) - 1
%val% = %val% + variable[i, HASH_KEY] + "=" + variable[i, HASH_VAL] + " "
NEXT
DIM str = INPUT("計算式を入力してください。<#CR><#CR>変数<#TAB>" + %val% + "<#CR>結果<#TAB>" + res)
IFB POS("=", str) THEN
DIM arr = SPLIT(str, "=")
TRY
variable[arr[0]] = EVAL(arr[1])
EXCEPT
FUKIDASI(TRY_ERRMSG)
CONTINUE
ENDTRY
ENDIF
FUKIDASI()
res = EVAL(REPLACE(str, "=", ":="))
IF res = EMPTY THEN BREAK
WEND
使用関数
解説
この記事は役に立ちましたか?
ご協力ありがとうございます。