【问题标题】:How to pass a list to a subroutine in BASIC-256如何将列表传递给 BASIC-256 中的子例程
【发布时间】:2019-01-10 14:51:46
【问题描述】:

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

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 页面。

感谢您的宝贵时间......

【问题讨论】:

  • “哦,亲爱的……BASIC最近应该变成的样子吗?”我猜还是那句话“你可以卖任何编程语言,只要你叫它BASIC”。 ... (眨眼!)
  • 我能问一下为什么这被标记为 [bbc-micro] 吗?

标签: syntax basic bbc-micro powerbasic


【解决方案1】:

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

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

【讨论】:

  • 感谢您的帮助!我会做出必要的改变
【解决方案2】:

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

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

Referring to this link 以防您有任何其他问题。

【讨论】:

  • 感谢 hmiedema9 - 我确实尝试过,但这也造成了由参数部分引起的编译错误。不过,我感谢您的帮助。谢谢
  • 嗯,我无法使用我现在可以自己编译的计算机,但我会尽量回到它。祝你好运
【解决方案3】:

彻底阅读documentation 后,有一个名为'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()

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 2011-06-21
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2015-03-07
    • 2015-09-27
    相关资源
    最近更新 更多