[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 plp626 于 2011-8-14 12:27 编辑

非常好的话题,无奈讨论的人真的很少,变量型函数(有时我叫它内敛函数)迟早会引起大家广泛关注,现在没有,只是时间问题;如果有bat人对批处理函数感兴趣,变量型函数是最佳研究对象;

关于楼主的问题
变量嵌套用多层for变量解释;对于独立for循环,加括号()用&连接即可;
=============================================
我遇到的问题是:
对我的脑袋来说,某些必须用预处理%%扩展后解释执行的复合语句(变量型函数就属于这样的语句)如何扩展,即变量型函数内不能再含有变量型函数,更不能递归(要突破这两点可能需要大家共同的智慧);

还有就是变量名空间的问题,我们用这类函数两个目的,短小加速度,变量型函数如果每个都要用setlocal和endlocal获得返回值,这个开销也是不小的,代码长了近100字节,速度也降低了,对于多个变量的返回这样的做法很难处理,要额外增加不少空间和时间的开销。

于是我都是用特殊前缀来标识函数中的变量,这样很简洁,但新的问题是我们如何有效管理这些垃圾变量?
====================================
没有真正接触这类变量型函数的编写,可能看帖不知所云,这很正常;大家对很多问题的表述所用的术语也不统一,这更是导致了理解上的困难;

为此我出几道题,大家编写试试,以体会楼主和我所云;

getnl函数
执行%getnl:##=nl%后,nl变量的值变成换行符;

pset函数
执行%pset:##=arrx,arry%后,把arrx所对应的变量值做为变量名,把arry所对应的变量值赋逐一赋给arrx所对应的变量;
比如现有:
  1. arrx[1]=a
  2. arrx[2]=b
  3. arrx[3]=abc
  4. arry[1]=X
  5. arry[2]=Y
  6. arry[3]=XYZ
复制代码
执行%pset:##=arrx,arry%后会得到变量,对应的变量值如下:
  1. a=X
  2. b=Y
  3. abc=XYZ
复制代码

TOP

返回列表