成员变量

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

声明成员变量

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

标量

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

常规向量

在声明常规向量的成员变量时,其方式与声明标量相似,但需在数据类型后添加 VECTOR 以指明该成员变量为一个常规向量。声明方式为:变量名 :: 数据类型 VECTOR。例如:age :: INT VECTOR、name :: 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。

获取成员变量

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

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