成员变量

成员变量是类中定义的变量。它们属于类的实例,每个实例都有自己的一套成员变量。成员变量可以在类的方法中访问和修改。

声明成员变量

成员声明时需要指定成员变量的类型,在 DolphinDB 中根据变量的数据不同,声明方法也不同:

标量

标量包括基本的数据类型,如 INT, CHAR, FLOAT, DOUBLE, STRING 等。声明方式为:变量名 :: 数据类型。例如:age :: INTname :: STRING

常规向量

在声明常规向量的成员变量时,其方式与声明标量相似,但需在数据类型后添加 VECTOR 以指明该成员变量为一个常规向量。声明方式为:变量名 :: 数据类型 VECTOR。例如:age :: INT VECTORname :: STRING VECTOR

数组向量

数组向量类型的成员变量与声明常规向量相似,但需在数据类型后添加 [] 以指明该成员变量为一个数组向量。声明方式为:变量名 :: 数据类型[] VECTOR。例如:age :: INT[] VECTOR

列式元组

列式元组声明方式为:变量名 :: ANY[数据类型] VECTOR。例如:price :: ANY[INT]

数据对

数据对类型成员变量声明方式为:变量名 :: 数据类型 PAIR。其中,数据类型只能为标量。例如:pr :: INT PAIR

矩阵

矩阵类型成员变量声明方式为:变量名 :: 数据类型 MATRIX。其中,数据类型只能为标量。例如:m :: DOUBLE MATRIX

集合

集合类型成员变量声明方式为:变量名 :: 数据类型 SET。其中,数据类型只能为标量。例如:st :: STRING SET

表类型成员变量声明方式为:变量名 :: TABLE例如:tb :: TABLE

字典

字典类型成员变量声明方式为:变量名 :: DICT[键类型, 值类型]。其中,键类型只能为标量;值类型支持任意类型标注,包括嵌套 DICT、VECTOR、PAIR、MATRIX、SET、TABLE 等,且支持任意嵌套深度。例如:

  • d1 :: DICT[INT, DOUBLE]

  • d2 :: DICT[STRING, INT VECTOR]

  • d3 :: DICT[STRING, DICT[INT, DOUBLE]]

  • d4 :: DICT[INT, INT PAIR]

Class

声明方式为:变量名 :: 类名,例如 g :: X

其它类型

对于无法使用上述类型标注的成员变量(如流计算引擎对象等),可使用 ANY 类型:变量名 :: ANY

获取成员变量

提供 attributeNamesattributeValuesattributeTypes方法,可以获取类实例的所有成员变量名称、属性值、成员变量类型。

class Person {
	
	name :: STRING
	age :: INT

	def Person(name_, age_) { 
		name = name_
		age = age_
	}
}

p = Person("Sam", 12)
attributeNames(p)
// output: ["name","age"]

attributeValues(p)
/* output:
name->Sam
age->12
*/

attributeTypes(p)
attr type
name STRING
age INT