GOSUB

GOSUB Label

Since 3.1

跳转到函数中用行标号Label声明的位置。 然后如果遇到RETURN语句,程序回到GOSUB语句后紧接着的代码处运行。

可以嵌套执行GOSUB调用,直至耗尽内存。

有和使用 GOTO 语句一样的限制。

Computed GOSUB

GOSUB Expression

Since 3.19

自Gambas 3.19以来, GOSUB (或 GOTO) 可以接受任何表达式作为参数。

此表达式必须返回一个整数,表示要跳转的分支的标签。

这个整数是通过使用标签作为表达式获得的。在这种情况下,标签被转换为表示它的整数索引(仅在定义标签的函数中)。

只有在任何控制结构之外的标签才能成为计算GOTO或GOSUB的目标。

Example

Dim JumpArray As Integer[]

JumpArray = [LABEL_1, LABEL_2, LABEL_3]

GoSub JumpArray[Rand(1, 3)]
Return

LABEL_1:
  Print "One !"
  Return
LABEL_2:
  Print "Two !"
  Return
LABEL_3:
  Print "Three !"
  Return

See also