0

我很难将列表传递给子程序(尴尬);我得到一个编译器错误。我遵循了关于数组的 BASIC-256 文档(http://doc.basic256.org/doku.php?id=en:arrays),并[]根据需要在子例程参数中包含了括号:

subroutine print_list(list) # or subroutine print_list(list[]) <----- **compiler** error occurs here
   for element=0 to list[?]-1
      print list[element]
   next element
end subroutine

subroutine main()
   list = {5.9, 6.0, 5.9, 5.7, 5.6, 5.7}
   call print_list(list[]) #  <----- **compiler** error occurs here
end subroutine

call main()

编译器抱怨我在子例程调用参数部分有错误。

我已尝试通过以下方式解决此问题;(i) 检查我对列表的初始化;(ii) 检查子程序定义和参数(编译器也不喜欢方括号);(iii) 从论点中排除[]括号和 (iv) 尝试联系 BASIC-256 Facebook 页面。

感谢您的时间....

4

3 回答 3

1

传递数据数组时,必须在变量名后包含一组空括号 []。添加此功能是为了减少常规变量和包含值数组的变量之间的混淆。

因此,在您的情况下,将您的方法签名从 更改subroutine print_list(list)subroutine print_list(list[])

如果您有任何其他问题,请参考此链接

于 2019-01-10T15:39:05.737 回答
1

根据网站上的信息,您不能将数组传递给您自己的子程序,只能传递内部(内置)子程序。

如果变量本质上是全局的,那没关系,只需在数组上执行您想要的任何操作,但如果它们需要是本地的,则无法使用 BASIC 的这种特殊变体来完成。

于 2019-01-10T19:16:27.817 回答
0

仔细阅读文档后,有一个名为“ref”的函数,它允许您通过引用函数或子例程来传递变量或数组。这样做可以让我打印数组内容。

这是我以前重写的代码以通过引用传递数组:

subroutine print_list(list)
   for element=0 to list[?]-1
      print list[element]
   next element
end subroutine

subroutine main()
   list = {5.9, 6.0, 5.9, 5.7, 5.6, 5.7}
   call print_list(ref(list)) 
end subroutine

call main()
于 2019-12-20T13:29:32.777 回答