类定义中,类名称、基类名称、成员及方法都是以#开头的标识符,不可重复。类名称在最前面,其次是基类名称;private、public及method的次序是任意的,且可多次定义;方法标识符后必须提供函数句柄。类成员的存储顺序与其定义顺序不一定相同。- B2 [$ }/ P' r L+ a' v2 M
8 _, E6 n: y% b J: g0 e/ l #__init__和#__del__只可被定义为方法,其中#__init__用于定义构造函数,#__del__用于定义析构函数。若这两个方法被缺省,其函数句柄被自动指定为0。构造函数和析构函数只有一个参数,即对象本身。$ O _. w* y8 R8 A6 b
( c0 o5 d! n: R4 C: a) r0 E# T
若方法有不止一个参数,则方法被调用时,第一个参数总是传入对象本身,相当于C++的this指针。 ?& J$ B1 l9 P5 ?1 U( M7 C' W
( ?. {9 F& z5 X8 l9 `; \6 x
约定:类名称以字母c开头;私有数据成员以pv开头;公有数据成员以pl开头;方法成员以m开头。1 c6 `# N; r. V( D, \* M; f' H4 P
class[#B, #A, method : #mGet : @getB], ( @* Z. A3 W$ i: c
class[#C, #B, method : #mGet : @getC];$ u2 `& r: m& j; u1 e, m4 W
main(:a,b,c)= 3 |2 j: W7 j7 C; B& {
c=obj[class_handle(#C)],# f3 {! W7 E9 t2 k5 x( X' L
o[c.#mGet," ",c.#B.#mGet," ",c.#B.#A.#mGet,"\r\n"],( w. O- t; n" j4 _# q
b=c.#B, a=b.#A, //获得基类对象 1 E* [$ b. W- X" G& }: k, A
o[c.#mGet," ",b.#mGet," ",a.#mGet,"\r\n"];
复制代码
结果:; z! E# G! b/ p0 v& G) U
, ]) T" v* E0 N# w- }
3 2 1! K) Q$ z" v' L; l% [5 Y) I4 E
3 2 1 * d& V. [, y( y. ]' y. E: V$ C& _+ e / [+ S9 {) N2 |: R& g$ @ (8)效率测试
!!!using("sys");- o! y! R2 } d$ Z4 q$ l
main(:a,i,t0,sum)= $ _ y6 ^+ w. w3 Y3 p$ m5 j
a=class{#A, # n, u! j! \9 g- ?" z
public: U. C. }, h+ q% j* X! i' P
#January, . L* {* q$ z+ C6 Z- b/ U0 E3 G P2 `
#February, ( [& V) P$ \5 Y% ^: v `! I/ n
#March,& J( k6 q$ ^% y$ I% ?
#April," @/ b) p* X; Y! B( z
#May, r. A2 o1 A3 M* D
#June,' Q# M( a7 [" E. G0 Y$ m
#July,7 m" v W8 M$ X* l
#August, $ R' f, |0 N+ I
#September, ( h8 ?4 p3 @2 R( N5 a8 M( N
#October,, |( i$ @- |2 s) t
#November, $ q# E( G" _; L( `" m" P$ k
#December, T$ x0 o4 W0 Y# Z- J$ X
}.obj[], , M8 l8 \9 N2 i$ l7 o
t0=clock(), sum=0, 6 L2 u1 T% I6 M" |% g
i=0, while{++i<=100000, 1 D$ O, f1 R% p1 k: O! @
a.#January=1,- ^+ f- `1 @' Q+ H" `4 t# y5 C
a.#February=2,; @2 g9 q d' l
a.#March=3, 2 r9 h1 s& Q P+ q. y4 O. y8 r2 D
a.#April=4, 8 S$ Q5 x0 S7 m3 x7 s' a( T& f M
a.#May=5,& V; j- L2 j/ U7 U$ u5 C5 H5 K9 ]
a.#June=6,% N! w4 M# H+ \4 q
a.#July=7, # Z8 U( n5 Q5 f8 c4 [
a.#August=8, 2 l" Y/ L) u0 j$ @/ J! V
a.#September=9, 8 S7 _ e! |" \' ?2 B
a.#October=10,4 {3 a) c3 U o4 N% ]
a.#November=11, # V* X- T: U) `" B
a.#December=12, # U: y2 r: [4 p3 v* i; z
sum=sum+a.#January+a.#February+a.#March+a.#April+a.#May+a.#June+a.#July+a.#August+a.#September+a.#October+a.#November+a.#December 7 o. ]# N) h+ F$ k) W