当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 24 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : vim script 不定参数问题 [解决]
帖子发表于 : 2011-05-01 20:20 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
一个预处理函数 Fun(...),一个处理函数 FunOp(...)
Fun 最终要调用 FunOp 进行具体操作,Fun 该如何调用 FunOp 才能把所有参数原封不动地再传给 FunOp ?
效果就如同 shell 脚本的 exec command "$@"。


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


最后由 自由建客 编辑于 2011-05-10 0:33,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-01 20:31 
头像

注册: 2010-09-13 19:04
帖子: 1404
地址: 0xFF00EE
送出感谢: 1
接收感谢: 3
说的不清楚


_________________
qq旋风离线空间下载程序
漂亮的fcitx皮肤
Fcitx皮肤合集


页首
 用户资料  
 
3 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-01 21:07 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
代码:
fun Fun(...)
   " 预处理
   return FunOp(这里该怎么写)   " 把接收的所有参数原封不动的再传给 FunOp
endfun

fun FunOp(...)
   " 具体操作
endfun


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-01 21:19 
头像

注册: 2007-12-14 13:40
帖子: 49877
地址: 志虚国乌由市
系统: Winbuntu
送出感谢: 29
接收感谢: 413
:em01


_________________
冷轩信

渠月 · QY

本人只会灌水,不负责回答问题

无聊可以点一下→ http://u.nu/ubuntu


页首
 用户资料  
 
5 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-01 21:22 
头像

注册: 2011-01-26 17:52
帖子: 9013
地址: 万林丛中的一抹浓绿,夹带落日余晖的安祥
送出感谢: 0 次
接收感谢: 0 次
:em01


_________________
Just do it, you will succeed!


页首
 用户资料  
 
6 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-01 21:32 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
返回字符还是数组?


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
7 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-01 22:14 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
代码:
:h a:000

你就不能多看看手册么


页首
 用户资料  
 
8 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-01 23:08 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
fanhe, 我看到了,但没看出来哪符合我的要求,a:000 是列表,我要的效果是
比如某地方
call Fun(1, 2, 3)
然后 Fun 内部调用 FunOp 时就是
FunOp(1, 2, 3) 的效果,而不是 FunOp([1, 2, 3]) 的效果


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-01 23:09 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
不会,只学过一点C……


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
10 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-01 23:26 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
自由建客 写道:
fanhe, 我看到了,但没看出来哪符合我的要求,a:000 是列表,我要的效果是
比如某地方
call Fun(1, 2, 3)
然后 Fun 内部调用 FunOp 时就是
FunOp(1, 2, 3) 的效果,而不是 FunOp([1, 2, 3]) 的效果

代码:
fun! Fun(...)
   " 预处理
   echo a:000
   if a:0 > 0
      let args = ''
      for idx in range(1, a:0 - 1)
         let args .= 'a:'.idx.', '
      endfor
      let args .= 'a:'.a:0.''
   endif
"   echo args
"   return FunOp(a:000)   " 把接收的所有参数原封不动的再传给 FunOp
   exec 'let ret = FunOp('. args .')'
   return ret
"   return FunOp(args)   " 把接收的所有参数原封不动的再传给 FunOp
endfun

fun! FunOp(...)
   echo a:000
   " 具体操作
endfun

call Fun('a', 1, ['xyz'])


方法是自己想出来的
你自己可以想办法自己封装一下


页首
 用户资料  
 
11 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-02 0:59 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
代码:
fun! Fun(...)
   echo "=== Fun ==="
   echo a:0
   let args=""
   let i=1
   while i<=a:0
      let args.="a:".i.","
      let i+=1
   endwhile
   echo args
   exe "let r=FunOp(".args.")"
   return r
endfun

fun! FunOp(...)
   echo "=== FunOp ==="
   echo a:0
endfun

Fun 这样的预处理函数有很多个,每个都这样写,好麻烦 :em68
有没有宏,只要写一行就扩展为
代码:
   let args=""
   let i=1
   while i<=a:0
      let args.="a:".i.","
      let i+=1
   endwhile
   exe "let r=FunOp(".args.")"
   return r

像 C 语言的 #define


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
12 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-02 1:18 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
代码:
let s:CALL_FUNOP="let args=''\n let i=1\n while i<=a:0\n let args.='a:'.i.','\n let i+=1\n endwhile\n echo args\n exe 'let r=FunOp('.args.')'\n return r"

fun! Fun(...)
   echo "=== Fun ==="
   echo a:0
   exe s:CALL_FUNOP
endfun

fun! FunOp(...)
   echo "=== FunOp ==="
   echo a:0
endfun

:em26 可读性啊


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
13 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-02 13:32 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
代码:
fun! s:Args(begin, end)
   if a:begin>a:end
      return ""
   else
      let args="a:".a:begin
   endif
   let i=a:begin+1
   while i<=a:end
      let args.=",a:".i
      let i+=1
   endwhile
   return args
endfun

fun! Fun(...)
   echo "=== Fun ==="
   echo a:0
   echo s:Args(1, a:0)
   exec "let r=FunOp(".s:Args(1, a:0).")"
   return r
endfun

fun! FunOp(...)
   echo "=== FunOp ==="
   echo a:0
   return "*****".a:0."*****"
endfun

好吧,最后方案了! :em28


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
14 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-02 14:06 
头像

注册: 2010-09-13 19:04
帖子: 1404
地址: 0xFF00EE
送出感谢: 1
接收感谢: 3
自由建客 写道:
代码:
fun! s:Args(begin, end)
   if a:begin>a:end
      return ""
   else
      let args="a:".a:begin
   endif
   let i=a:begin+1
   while i<=a:end
      let args.=",a:".i
      let i+=1
   endwhile
   return args
endfun

fun! Fun(...)
   echo "=== Fun ==="
   echo a:0
   echo s:Args(1, a:0)
   exec "let r=FunOp(".s:Args(1, a:0).")"
   return r
endfun

fun! FunOp(...)
   echo "=== FunOp ==="
   echo a:0
   return "*****".a:0."*****"
endfun

好吧,最后方案了! :em28






应该还有更简单的办法

代码:
call Fun(1, 2, 3)

FunOp(a:000)


传入列表,FunOp再按列表解析
a:1[0]
a:1[1]
a:1[2]


_________________
qq旋风离线空间下载程序
漂亮的fcitx皮肤
Fcitx皮肤合集


页首
 用户资料  
 
15 楼 
 文章标题 : Re: vim script 不定参数问题
帖子发表于 : 2011-05-02 14:36 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
FunOp 的接口不能变动,这是规定


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 24 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译