方法声明
过程
[ STATIC ] { PUBLIC | PRIVATE } { PROCEDURE | SUB }
Identifier
(
[ Parameter AS Datatype [ , ... ] ] [ , ]
[ OPTIONAL Optional Parameter AS Datatype [ , ... ] ] [ , ] [ ... ]
)
...
END
[ STATIC ] { PUBLIC | PRIVATE } { PROCEDURE | SUB }
Identifier
(
[ [ BYREF ] Parameter AS Datatype [ , ... ] ] [ , ]
[ OPTIONAL [ BYREF ] Optional Parameter AS Datatype [ , ... ] ] [ , ] [ ... ]
)
...
END
声明一个过程,也就是一个没有任何返回值的
方法。
END关键字用来表示过程的结尾。
函数
[ STATIC ] { PUBLIC | PRIVATE } { FUNCTION | PROCEDURE | SUB }
Identifier
(
[ Parameter AS Datatype [ , ... ] ] [ , ]
[ OPTIONAL Optional Parameter AS Datatype [ , ... ] ] [ , ] [ ... ]
)
AS Datatype
...
END
[ STATIC ] { PUBLIC | PRIVATE } { FUNCTION | PROCEDURE | SUB }
Identifier
(
[ [ BYREF ] Parameter AS Datatype [ , ... ] ] [ , ]
[ OPTIONAL [ BYREF ] Optional Parameter AS Datatype [ , ... ] ] [ , ] [ ... ]
)
AS Datatype
...
END
声明一个函数,也就是一个有返回值的
方法。
END关键字用来表示函数的结尾。
必须指定返回值的数据类型。
 |
当然,声明必须写在一行上。像语法描述中那样写,是为了方便阅读。
|
RETURN关键字用于结束函数,并且传递返回值给调用程序。
Example
FUNCTION Calc(fX AS Float) AS Float
RETURN Sin(fX) * Exp(- fX)
END
PUBLIC SUB Button1_Click()
PRINT Calc(0);; Calc(0.5);; Calc(1)
END
0 0.290786288213 0.309559875653
方法的使用
方法可以使用在其声明所在的
类中任意位置。
方法的参数
方法的所有参数使用“,”分隔开。
- 如果指定OPTIONAL关键字,其后的所有参数是可选参数。可以在参数声明后面使用等号为其指定缺省值。
- 如果参数列表以“...”结束,那么方法可以接收附加参数。每一个附加参数用Param类传递给方法。
Example
STATIC PUBLIC PROCEDURE Main()
...
PUBLIC FUNCTION Calc(fA AS Float, fB AS Float) AS Float
...
PRIVATE SUB DoIt(sCommand AS String, OPTIONAL bSaveIt AS Boolean = TRUE)
...
STATIC PRIVATE FUNCTION MyPrintf(sFormat AS String, ...) AS Integer
通过引用传递参数
指定
BYREF关键字时,参数必须是可以被赋值的表达式,被调用的函数或过程可以修改的内容。
Example
SUB ConvPixelToCentimeter(BYREF Value as Float, Dpi AS Integer)
Value = Value / Dpi * 2.54
END
PUBLIC SUB Main()
DIM Size AS Float
Size = 256
ConvPixelToCentimeter(BYREF Size, 96)
PRINT Size
END
6.773333333333
 |
即使在声明函数时使用了BYREF关键字,如果在调用函数时不使用BYREF关键字,参数仍将是值传递。
换句话说:被调用的函数允许参数通过引用传递,然而由调用程序决定参数传递方式。
|