Oberon-07 中是否允许数组赋值操作(复制)?还是只允许指向数组的指针?还是依赖于实现?OberonJS 似乎在编译器中得到支持,但从语言描述上似乎没有。或者其他版本的 Oberon 可以支持这样的操作吗?
...
VAR
arr1, arr2 : ARRAY 5 OF INTEGER;
...
arr2 := arr1; (*разрешена ли эта операция?*)
Oberon-07 中是否允许数组赋值操作(复制)?还是只允许指向数组的指针?还是依赖于实现?OberonJS 似乎在编译器中得到支持,但从语言描述上似乎没有。或者其他版本的 Oberon 可以支持这样的操作吗?
...
VAR
arr1, arr2 : ARRAY 5 OF INTEGER;
...
arr2 := arr1; (*разрешена ли эта операция?*)
是的,Oberon-07 中允许数组分配。
arr2 := arr1允许该操作。请参阅Oberon-07 语言帖子(俄语翻译),第 9.1 节。作业:
也许你被指定片段之前写的那句话误导了:
这不是关于普通变量,而是关于参数。在 Oberon-07 中,所有数组和记录参数都以只读模式通过引用传递。如果在声明过程时,在参数之前指定单词 VAR,则传递此参数时可能会更改(但也可以通过引用)。
从本质上讲,该报告对此只字未提。但是遵循最小意外的原则(假设这里没有 POINTER TO ARRAY)——应该有一个副本。在 POINTER 的情况下——必须进行指针分配。但我再次重申:报告中没有披露这一时刻。在 OberonJS 中,恕我直言 - 这一点是正确实现的。