0

嗨,我对数组有疑问。

我有类 Arrvar a = new array of int[100]是问题所在。

该示例有效,但是我将 var a ... 放在类 Arr (return) (Tab) 后面,我收到以下错误消息:

arr.gs:3.2-3.4:错误:语法错误,预期的声明,但得到了 `var' 和之前的 `tab indent'

有什么问题。对不起我的英语,对不起我不懂编辑

谢谢

class Arr
    def arr_test()
        var a = new array of int [100]
        i : int = 0
        for i = 0 to 99
            a[i] = i
        for i = 0 to 99
            print "%4d",a[i]
init
    Intl.setlocale()
    var v = new Arr()
    v.arr_test()
4

2 回答 2

1

我在我的电脑上试过你的代码,没有问题,但是缩进的格式是错误的。

精灵代码缩进可以用制表符或空格来写;如果您使用空格,则必须在代码开头明确说明有多少...像这样 [indent=4]。喜欢这里http://manualgenie.blogspot.com.es/

但是如果你想使用制表符代替空格(更舒适),你必须确保在任何代码行之前没有空格。喜欢这里: http: //genie.webierta.skn1.com/wiki/colecciones

对于 Vala/genie 编程,我使用 Geany 编辑器,它有一个选项可以替换选项卡中的所有空格,或者任务栏的“文档”选项中的空格中的所有选项卡。

当问题是如何使用 o where use "var" 我将在这里解释: Var 用于仅在一个代码行中声明和定义一个标识符(变量)并临时使用。但是如果你想在类中拥有全局范围,让它对类的所有“def”过程有用,你必须在类的开头声明。就像上面的例子。此外,如果我们使用“init”来声明它,则该类必须定义为“GLib.Object”

class Arr:GLib.Object
    a : array of int [] //declare
    init 
        a = new array of int [100] //define
    def arr_test()

        i : int = 0
        for i = 0 to 99
            a[i] = i
        for i = 0 to 99
            print "%4d",a[i]
init
    var v = new Arr()
    v.arr_test()

此外,您可以声明它,但在您的“def”过程中定义。就像在这个例子中一样:

class Arr
    a : array of int []
    def arr_test()
        a = new array of int [100]
        i : int = 0
        for i = 0 to 99
            a[i] = i
        for i = 0 to 99
            print "%4d",a[i]

    def arr_test2()
        a = new array of int [120]
        i : int = 0
        for i = 0 to 119
            a[i] = i
        for i = 0 to 119
            print "%4d",a[i]
init
    var v = new Arr()
    v.arr_test()
    v.arr_test2()

注意:在这种情况下,我们不使用“init”,因此不需要声明:GLib.Object。

于 2017-01-21T19:02:41.060 回答
0

谢谢,

我的问题不是制表符或空格。我已经检查过了。

这就是问题 :

类 Arr

    var a = new array of int [100]

    def ...

在里面

...

... 等等。

它是一个 Tab 没有空格。

谢谢

于 2017-01-21T19:32:05.790 回答