Difference between revisions of "ZH/Documentation/BASIC Guide/Arrays"
(New page: {{DISPLAYTITLE:数组}} {{ZH/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Documentation/BASIC Guide/Date |NextPage=Documentation/BASIC Guide/Scope of Va...) |
|||
(3 intermediate revisions by one other user not shown) | |||
Line 3: | Line 3: | ||
|ShowPrevNext=block | |ShowPrevNext=block | ||
|ShowPrevPage=block | |ShowPrevPage=block | ||
− | |PrevPage=Documentation/BASIC Guide/Date | + | |PrevPage=ZH/Documentation/BASIC Guide/Date |
− | |NextPage=Documentation/BASIC Guide/Scope of Variables | + | |NextPage=ZH/Documentation/BASIC Guide/Scope of Variables |
|lang=block | |lang=block | ||
}} | }} | ||
Line 46: | Line 46: | ||
*最大元素数目(在数据字段维中)为 16368。 | *最大元素数目(在数据字段维中)为 16368。 | ||
− | {{ | + | {{Note|其他限制值有时适用于 VBA 中的数据字段索引。同样也适用于每个维中的最大元素数目。相关 VBA 文档中提供了对应的有效值。}} |
==起始索引的指定值== | ==起始索引的指定值== | ||
Line 68: | Line 68: | ||
创建了 4 个整型变量,可以使用表达式 <tt>MyInteger(1)</tt>、<tt>MyInteger(2)</tt>、<tt>MyInteger(3)</tt> 和 <tt>MyInteger(4)</tt> 来描述这些变量。 | 创建了 4 个整型变量,可以使用表达式 <tt>MyInteger(1)</tt>、<tt>MyInteger(2)</tt>、<tt>MyInteger(3)</tt> 和 <tt>MyInteger(4)</tt> 来描述这些变量。 | ||
− | {{ | + | {{Note|与 VBA 不同,在 {{OOo}} Basic 中,表达式 <tt>Option Base 1</tt> 不影响数组中的元素数目。它只是使 {{OOo}} Basic 中的起始索引发生变化。在 VBA 中,声明 <tt>MyInteger(3)</tt> 会创建索引为 1 至 3 的三个整型值;而在 {{OOo}} Basic 中,该声明会创建索引为 1 至 4 的四个整型值。通过使用 <tt>Option Compatible</tt>,{{OOo}} Basic 可以像 VBA 一样运行。}} |
==多维数据字段== | ==多维数据字段== | ||
Line 78: | Line 78: | ||
</source> | </source> | ||
− | + | 定义了一个二维整型数组,每一维具有 6 个索引(可通过索引 0 至 5 进行寻址)。整个数组总共可记录 6 x 6 = 36 个整型值。 | |
虽然可以在 {{OOo}} Basic 数组中定义数百个维,但可用内存量限制了可以拥有的维数。 | 虽然可以在 {{OOo}} Basic 数组中定义数百个维,但可用内存量限制了可以拥有的维数。 | ||
Line 90: | Line 90: | ||
</source> | </source> | ||
− | {{ | + | {{Note|与 VBA 中只能使用 <tt>Dim MyArray()</tt> 定义动态数组维不同,在 {{OOo}} Basic 中,您可以使用 <tt>ReDim</tt> 更改静态和动态数组。}} |
以下示例更改了初始数组维,以便可以记录 11 或 21 个值: | 以下示例更改了初始数组维,以便可以记录 11 或 21 个值: | ||
Line 115: | Line 115: | ||
在使用 <tt>Preserve</tt> 时,请确保维数和变量类型保持不变。 | 在使用 <tt>Preserve</tt> 时,请确保维数和变量类型保持不变。 | ||
− | {{ | + | {{Note|在 VBA 中,只能通过 <tt>Preserve</tt> 更改数据字段最后一维的上限;而 {{OOo}} Basic 还允许您更改其他维。}} |
如果将 <tt>ReDim</tt> 与 <tt>Preserve</tt> 一起使用,则必须使用原始数据字段声明中指定的同一数据类型。 | 如果将 <tt>ReDim</tt> 与 <tt>Preserve</tt> 一起使用,则必须使用原始数据字段声明中指定的同一数据类型。 | ||
{{PDL1}} | {{PDL1}} | ||
+ | |||
+ | |||
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Arrays}} | {{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Arrays}} |
Latest revision as of 14:00, 6 July 2018
除了简单变量(标量)以外,Apache OpenOffice Basic 还支持数组(数据字段)。数据字段包含多个变量,可通过索引对这些变量进行寻址。
简单数组
数组声明与简单变量声明类似。但与变量声明不同的是,数组名称后面是一对括号,其中包含元素数目规范。表达式
Dim MyArray(3)
声明了一个数组,其中包含四个变体数据类型的变量,即 MyArray(0)、MyArray(1)、MyArray(2) 和 MyArray(3)。
也可以在数组中声明特定类型的变量。例如,以下行声明了一个包含四个整型变量的数组:
Dim MyInteger(3) As Integer
在上面的示例中,数组的索引始终以标准起始值零开始。也可以为数据字段声明指定一个包含起始值和最终值的有效性范围。以下示例声明了一个包含六个整型值的数据字段,可以使用索引 5 至 10 对这些值进行寻址:
Dim MyInteger(5 To 10)
索引不必为正值。以下示例也是一个正确的声明,但具有负数据字段限制值:
Dim MyInteger(-10 To -5)
它声明了一个包含 6 个值的整型数据字段,可以使用索引 -10 至 -5 对这些值进行寻址。
在定义数据字段索引时,必须遵循以下三个限制:
- 可能的最小索引为 -32768。
- 可能的最大索引为 32767。
- 最大元素数目(在数据字段维中)为 16368。
起始索引的指定值
数据字段的起始索引通常以值 0 开始。也可以使用以下调用将所有数据字段声明的起始索引更改为值 1:
Option Base 1
如果要将此调用应用于模块中的所有数组声明,则必须将其包含在模块标头中。不过,此调用不影响通过 Apache OpenOffice API 定义的 UNO 序列,其索引始终以 0 开始。要使程序更清晰,应避免使用 Option Base 1。
如果使用 Option Base 1,数组中的元素数目不会受到影响,只有起始索引会发生变化。声明
Option Base 1
' ...
Dim MyInteger(3)
创建了 4 个整型变量,可以使用表达式 MyInteger(1)、MyInteger(2)、MyInteger(3) 和 MyInteger(4) 来描述这些变量。
多维数据字段
除了单维数据字段之外,Apache OpenOffice Basic 还支持使用多维数据字段。相应的维之间用逗号分隔。示例
Dim MyIntArray(5, 5)
定义了一个二维整型数组,每一维具有 6 个索引(可通过索引 0 至 5 进行寻址)。整个数组总共可记录 6 x 6 = 36 个整型值。
虽然可以在 Apache OpenOffice Basic 数组中定义数百个维,但可用内存量限制了可以拥有的维数。
数据字段维的动态变更
上面的示例基于已指定维的数据字段。也可以定义数据字段维动态变更的数组。例如,可以定义一个数组,以包含文本中所有以字母 A 开头的单词。由于最初不知道这些单词的数目,因此,需要以后能够更改字段限制值。为此,请在 Apache OpenOffice Basic 中使用以下调用:
ReDim MyArray(10)
以下示例更改了初始数组维,以便可以记录 11 或 21 个值:
Dim MyArray(4) As Integer ' Declaration with five elements
' ...
ReDim MyArray(10) As Integer ' Increase to 11 elements
' ...
ReDim MyArray(20) As Integer ' Increase to 21 elements
在重置数组维时,可以使用前面几节中简要介绍的任意选项。其中包括声明多维数据字段和指定显式起始值和最终值。更改数据字段维后,所有内容都将丢失。如果要保留原始值,请使用 Preserve 命令:
Dim MyArray(10) As Integer ' Defining the initial
' dimensions
' ...
ReDim Preserve MyArray(20) As Integer ' Increase in
' data field, while
' retaining content
在使用 Preserve 时,请确保维数和变量类型保持不变。
如果将 ReDim 与 Preserve 一起使用,则必须使用原始数据字段声明中指定的同一数据类型。
Content on this page is licensed under the Public Documentation License (PDL). |