Skip to content
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である