预设的值

From Apache OpenOffice Wiki
Jump to: navigation, search


通过使用预设的值,实现程序就不必使用含义模糊的数字或其他文字值。有两种预设的值,即常数和枚举。常数可以包含所有基本 UNO 类型的值,void 除外。枚举自动以 long 值编号。


Const 和 Constants

constants 类型是 const 类型的容器。constants 指令的开头是关键字 constants,然后给出一组新的 const 值的标识符,并将主体放置在花括号中,结尾是分号。Constant 主体包含 const 定义的列表,定义中是成员的值,开头是关键字 const,然后是已知类型名称和用大写字母表示的 const 的标识符。每个 const 定义必须使用等号指定 const 的值。值必须与给定的类型相匹配,可以是整数、浮点数、字符,也可以是使用下表中的运算符计算出的合适的 const 值或算术表达式。同样,const 定义的结尾也必须是分号。

  #ifndef __com_sun_star_awt_FontWeight_idl__
  #define __com_sun_star_awt_FontWeight_idl__
 
  module com { module sun { module star { module awt {
 
  constants FontWeight
  {
      const float DONTKNOW = 0.000000; 
      const float THIN = 50.000000; 
      const float ULTRALIGHT = 60.000000; 
      const float LIGHT = 75.000000; 
      const float SEMILIGHT = 90.000000; 
      const float NORMAL = 100.000000; 
      const float SEMIBOLD = 110.000000; 
      const float BOLD = 150.000000; 
      const float ULTRABOLD = 175.000000; 
      const float BLACK = 200.000000; 
  };
 
  }; }; }; };


const 中使用的运算符 Meaning
+
-
*
/
% 取模
- 负号
+ 正号
| 位运算:或
^ 位运算:或
& 位运算:与
~ 位运算:非
>> << 位运算:右移、左移
Tip.png 使用 constantconst 类型分组。在 Java 语言中,绑定一个 constant 组将为所有 const 成员带来一个类,而一个 const 将映射到整个类。



Enum

Enum 类型包含一组预设的 long 值,并将其映射为有意义的符号。它相当于 C++ 中的枚举类型。enum 指令的开头是关键字 enum,然后是一组新的 enum 值的标识符,并在花括号中给出 enum 的主体,结尾是分号。enum 主体包含以逗号分隔的符号列表,符号用大写字母表示,默认情况下,这些符号将自动映射到从零开始计数的 long 值。

  #ifndef __com_sun_star_style_ParagraphAdjust_idl__ 
  #define __com_sun_star_style_ParagraphAdjust_idl__ 
 
  module com { module sun { module star { module style {
 
  enum ParagraphAdjust
  {
      LEFT,
      RIGHT,
      BLOCK,
      CENTER,
      STRETCH
  };
 
  }; }; }; };
  #endif


在这个示例中,<idlml>com.sun.star.style.ParagraphAdjust:LEFT</idlml> 对应 0,ParagraphAdjust.RIGHT 对应 1,以此类推。


还可以使用等号将一个 enum 成员设定为 long 值。之后的所有 enum 值都从这个值开始递增。如果在后面的代码中又进行指定,则从该指定开始计数:\

  enum Error {
      SYSTEM = 10, // value 10
      RUNTIME, // value 11
      FATAL, // value 12
      USER = 30, // value 30
      SOFT // value 31
  };


Documentation caution.png 最好不要显式使用 enum 值,也不应这样使用。这是 enum 类型的原有特点,没有任何实际意义,反而会带来一些问题,例如使语言绑定变得复杂。
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages