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

呼び出す度に真偽値のどちらかを順番に返す関数です。