1

我在玩 gambas。

这段代码给了我错误“FMain.class:6 中的意外暗淡”

Public Sub Form_Open()

  Print "this won't work"

  Dim nickname As String = "gambas"

  Print "Your new name is " & nickname

End

此代码没有,并且运行良好:

Public Sub Form_Open()

  Dim nickname As String = "gambas"

  Print "Your new name is " & nickname  

End

gambas 是否有像 pascal 一样声明变量的要求?我在文档中找不到任何提及。谢谢。

4

2 回答 2

1

Gambas 要求将所有DIM语句放在函数或子例程内的任何可执行代码之前(强调我的):

http://gambaswiki.org/wiki/lang/dim

所有DIM声明必须在第一个可执行命令之前FUNCTION或之前。SUB

因此,将您的代码更改为:

Public Sub Form_Open()

  Dim nickname As String = "gambas"

  Print "this will work"

  Print "Your new name is " & nickname

End

Gambas 对所有局部变量的前向声明的要求非常老派。有时它确实使编写自文档代码变得更容易,并且它鼓励缩短函数,但如果一个函数有许多不能立即初始化的中间短期局部变量(例如,在函数内部的嵌套循环内),那么它会妨碍可读性。YMMV。

于 2019-03-03T04:13:40.327 回答
1

自 Gambas 3.12 起不再需要此功能。

但我建议继续在顶层函数中声明变量。两年后,它使代码更具可读性。

于 2019-07-02T15:21:14.340 回答