为什么在函数调用后将变量变暗后,Gambas会给我一个错误?

时间:2019-03-03 04:05:20

标签: 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那样声明变量的要求?我在文档中找不到任何提及。谢谢。

2 个答案:

答案 0 :(得分:1)

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

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

  

所有DIM声明必须在第一个可执行命令之前的FUNCTIONSUB中。

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

Public Sub Form_Open()

  Dim nickname As String = "gambas"

  Print "this will work"

  Print "Your new name is " & nickname

End

Gambas对所有局部变量进行前向声明的要求非常古老。有时这样做确实使编写自文档代码变得更加容易,并且激励了使函数简短化,但是如果一个函数具有许多无法立即初始化的短暂的中间局部变量(例如,在函数内部的嵌套循环中),则会妨碍可读性。 YMMV。

答案 1 :(得分:0)

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

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