Next: , Previous: , Up: Variables   [Contents][Index]


11.14 Variables with Restricted Values

通常のLisp変数には、有効なLispオブジェクトである任意の値を割り当てることができます。しかし、LispではなくCで定義されたLisp変数もあります。これらの変数のほとんどは、DEFVAR_LISPを使用してCコードで定義されています。Lispで定義された変数と同様、これらは任意の値をとることができます。しかし、いくつかの変数はDEFVAR_INTDEFVAR_BOOLを使用して定義されています。C実装の概要的な議論は、Writing Emacs Primitives、特にタイプsyms_of_filenameの関数の説明を参照してください。

タイプがDEFVAR_BOOLの変数は、値にniltしかとることができません。他の値の割り当てを試みると、tはセットされます:

(let ((display-hourglass 5))
  display-hourglass)
     ⇒ t
Variable: byte-boolean-vars

この変数は、タイプDEFVAR_BOOLのすべての変数のリストを保持します。

タイプがDEFVAR_INTの変数は、整数値だけをとることができます。他の値の割り当てを試みると、結果はエラーになります:

(setq undo-limit 1000.0)
error→ Wrong type argument: integerp, 1000.0