大多數的語言都會有一種只能表示真(true)或假(false)的資料型別,有的語言稱此型別為boolean,有的稱為bool,REBOL稱它為logic!。
由於電腦資料處理時,最小的單位是位元組(8個位元),而8個位元能夠表達的資料有2的8次方(256)種,所以只用來表達logic!實在有一點浪費,但這也是無可奈何的事。
REBOL 3.0充分運用原本浪費的空間,來做更豐富的表達。logic!可以被視為有許多位元欄位(bit field),每個欄位都可以有自己的名稱:
>> paradigm: make logic! [ imperative object-oriented functional logical ]
== false
>> paradigm/imperative: true
== true
>> paradigm/functional: true
== true
>> mold/all paragigm
{#[logic! 5 [imperative object-oriented functional logical]]}
為何內部的值會是5?因為imperative(最低的位元)和object-oriented(第三低的位元)為true,所以值為#{00000101},也就是5。
邏輯值的位元欄位可以超過8個,例如:
>> paradigm: make logic! [ b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 ]
== false
由於只要有任何一個位元欄位為true,整體邏輯值就為true,所以位元欄位可以用來取代OR運算子或ANY函數,例如:
if any [b1 b2 b3 b4 b5] [
do-something
]
改寫成:
flags: make logic! [b1 b2 b3 b4 b5]
...
if flags [
do-something
]
2008年3月31日
2008年3月17日
REBOL的命名慣例
- 型別名稱後面加上驚嘆號,例如「integer!」、「char!」、「block!」。
- 只詢問資訊,沒有命令動作,也不會更動任何資料的函數,名稱後面加上問號「?」,例如「length?」、「type?」、「exists?」。
- 一個單字如果由多個字組成,則字和字之間使用-當連接符號,不使用底線當連接符號,例如「to-local-file」、「split-path」、「make-dir」。
- 目的與作用一樣,只是多了一點小變化,則名稱也多了一點小變化,通常是在名稱後面加上「*」或「+」或「~」,例如「first」與「first+」、「system/options/locale」與「system/options/locale*」。
訂閱:
文章 (Atom)