-
Notifications
You must be signed in to change notification settings - Fork 7
boolean
Silica edited this page May 4, 2012
·
2 revisions
#boolean
PSLには論理型は存在しない.
基本組み込み定数trueとfalseは、単に数値の1と0であり
論理演算や比較演算の結果も全て1と0である.
##論理型変換
しかし内部的には、全ての型は論理型への変換規則を持ち
if (x)
やx ? 1 : 0
の様に論理型を要求する箇所へ直接変数を渡した場合
それぞれの型の規則に従って真偽値に変換される.
###nil
常にfalseとなる.
###数値型 (int,hex,float)
0がfalse、それ以外がtrueである.
###文字列型 (string)
""(空文字列、長さ0の文字列)がfalse、それ以外がtrueである.
"0"や"a"等、数値変換すれば0になる文字列でもtrueとなる.
###参照型 (ref)
参照先が存在する場合はtrue.
参照先を持たない空ポインタはfalseとなる.
###リスト型 (,,,)
要素数が0であればfalse
要素数が1である場合は[0]の値の真偽値がそのまま全体の結果として扱われる
要素数が2以上であれば常にtrueである.
###オブジェクト型 (object)
配列要素、メンバ、関数コードのうちいずれか一つでも存在すればtrue.
どれも存在しなければfalseである.
###メソッド型、C関数型、Cメソッド型
常にtrueである.
###Cポインタ型
値がNULLならfalse、それ以外はtrue.
###スレッド型 (thread)
実行可能であればtrue
既に終了済み(yieldではなくreturnされている)か
実行準備が出来ていなければ(関数を読み込んでいない、読み込んだオブジェクトが関数ではない)falseである