boolean関係を整備してみた。
boolean.lua
-- boolean.lua -- NScripterでは、ブーリアン型が存在しないので、変換関数を作ってみた。 do -- 変換関数を作る関数 function make_bool2value(tv, fv) if type(tv)=="nil" or type(fv)=="nil" then NSOkBox("nil以外の値を二つ指定してください。", "make_bool2value") NSEnd() end return function(bool) if bool then return tv else return fv end end end -- ブーリアン型を数値型へ変換する。 bool2num = make_bool2value(1, 0) b2n = bool2num -- エイリアス -- ランダムにtrueかfalseを返す何か。 function torf() return math.random(1, 2)==1 end -- torf は true or false の略 -- コインを作る何か。 function make_coin(head, tail) return function() if torf() then return head else return tail end end end -- trueとfalseを交互に返す関数。 local flipflop_flag = 0 function flipflop() flipflop_flag = 1-flipflop_flag return flipflop_flag==0 end end
使い方
そのまま貼り付けると、6つの関数が追加されます。
bool2num
真偽値を与えると、数値の1か0のどちらかを返します。
b2n
bool2numのエイリアス(別名)です。どちらを使っても同じ結果になります。
make_bool2value
オリジナルのbool2numのような関数を作って返します。
local func = make_bool2num("真", "偽") NSOkBox(func(true), func(false)) -- タイトルが"偽"で本文が"真"のポップアップ
torf
true or falseの略で、trueかfalseのどちらかをランダムに返します。
make_coin
コインを作ります。引数には、コインの表と裏に書くべき内容を与えます。
local coin = make_coin("表", "裏") NSOkBox(coin(), "コインを投げた。") -- "表"か"裏"のどちらかがポップアップする。
注意点
逆に、その他の値をboolean型に変更するのは簡単なので作っていません。
単純に二つの変数を==で比較しさえすれば、それがそのままboolean型を発生させるからです。
flipflog
呼び出す度に真偽値のどちらかを順番に返す関数です。