按相等大小区间处理,先按大小分割区间:
fun! Fgqjjj(m,n,k)
"分割区间几基,[m,n),m,n左闭右开."
"[a,b],分成一份为n大小的[a,a+n),[a+n,a+2n),..."
let l=[]
let [m,n,k,i,j]=[a:m,a:n,a:k,a:m,a:m+a:k]
"echo [m,n,k,i,j]"
while i<nlet e=min([j,n])"min是[]".call add(l,[i,e])let[i,j]=[i+k,j+k]
endw
return l
"l里面都是左闭右开[)."
endf
分割成子区间后,然后逆向区间(从后向前)
执行.
let H=function(a:f)
for i in reverse(a:l)let C=extend(i,a:b)//扩展参数包.call call(H,C)
endfor
这样,就可以了,a:000
直接转成一个a:b
参数包.
f
的格式为F(i,j)
,前2个为[)
子区间的头尾
.
如这样调用:
call Qjnmy(3,'Jljdh')
先给定大区间,再按大小给定一堆小区间,然后给定小区间执行的函数
.
注意,给定大区间是[]
区间,而不是普通的[)
区间!