Functions.AEvalOld 方法 (__Array, ICodeblock, __Usual) | |
对数组中的每个元素执行代码块。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION AEvalOld(
aArray AS ARRAY,
cbBlock AS ICodeblock,
nStart AS USUAL
) AS ARRAY
public static __Array AEvalOld(
__Array aArray,
ICodeblock cbBlock,
__Usual nStart
)
查看代码参数
- aArray
- 类型:__Array
要遍历的数组。 - cbBlock
- 类型:ICodeblock
要执行的代码块。 - nStart
- 类型:__Usual
起始元素
负值从末尾开始。
如果 nCount 为正,默认值为1;如果 nCount 为负,默认值为数组的长度。
返回值
类型:
__Array
对
aArray 的引用。
代码块的返回值被忽略。
要将代码块的返回值赋给数组中的每个元素,请使用 AEvalA() 函数。
备注
AEvalOld() 将元素值和元素索引作为参数传递。
AEvalOld() 不对它正在传递的数组元素的内容做任何假设。
假定提供的代码块知道每个元素中将包含什么类型的数据。
AEvalOld() 类似于 DBEval(),后者为数据库文件的每条记录执行代码。
像 DBEval() 一样,AEvalOld() 可以用作构建简单和复杂数组结构的迭代命令的原语。
提示: |
---|
在 Visual Objects 2 中引入了两个不同的函数:AEval() 和 AEvalOld()。这些函数之间的区别在于 AEval() 只用一个参数(数组中的元素)调用代码块,而 AEvalOld() 还传入第二个参数(数组索引)。在 X# 中,这种区别不再存在。因此,在 X# 中 AEval() 和 AEvalOld() 做的是同样的事情。
|
示例
此示例使用 AEvalOld() 显示由 Directory() 函数返回的文件名和文件大小数组:
1LOCAL aFiles := Directory("*.dbf")
2LOCAL nTotal := 0
3AEvalOld(aFiles, {| aDBFFile | QOut(PadR(aDBFFile[F_NAME], 10), ;
4 aDBFFile[F_SIZE]), aDBFFile[F_SIZE]), nTotal += aDBFFile[F_SIZE]})
5? "总字节数:", nTotal
下一个示例根据条件更改数组元素的内容。
如果条件为假,则仅显示数组元素。
注意代码块参数的使用:
1LOCAL aArray[6]
2AFill (aArray, "old")
3AEvalOld (aArray, {|cValue, nIndex| IF(cValue == "old",;
4ArrayPut (aArray, nIndex,"new"),QOut(cValue))})
参见