在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3343|回复: 1

[讨论] vim script function and print question

[复制链接]
发表于 2016-7-14 14:16:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
I write a function like this:
function InsertNumber(start, end, step)

let i = a:start

let curr_line = 0

while i <= a:end
        if a:step <= 0
            echo "Error: step cannot <=0."
            break
        endif

call append(curr_line, i)

let i += a:step

let curr_line += 1

endwhile
endfunction


when I call this function, I type this:
:echo InsertNumber(8,10,1)
8
9
10


1) How can I give arguement "step" a default value(eg: 1) when define the function?
like a C function:
void C_func(int a, int b_have_default_val = 1)
{

;
}
2)
I want to print number like this, how to do it?
08
09
10
 楼主| 发表于 2016-7-14 17:58:37 | 显示全部楼层
本帖最后由 luoyanghero 于 2016-7-14 18:01 编辑

I complete the function as follow, now I want to add radix option, but I don't know how to get width. Can you help me complement it

function InsertNumber(start, end,...) " step,is_column_first_0_padding,radix(b,d,o,x)
        let l:i = a:start
        let l:curr_line = 0
    if a:0 == 0          " a:0 extra argument numbers
        let l:step = 1
    else   
        let l:step = a:1 " the first extra argument
    endif
    if a:0 == 2
        let l:is_padding = 0
    else
        let l:is_padding = 1 "default padding
    endif
    if a:0 == 3
        let l:radix = a:3
    else
        let l:radix = ""
    endif
    if l:radix == "b"
    elseif l:radix == "o"
    elseif l:radix == "x"
    else
        let l:width = float2nr(trunc(log10(a:end))) + 1
        let l:format = '%0'.l:width.'d'
    endif
    while l:i <= a:end
        if l:step <= 0
            echo "Error: step cannot <= 0."
            break
        endif
        if l:is_padding == 1
                    call append(curr_line, printf(l:format, l:i))
            else
            call append(curr_line, l:i)
        endif
        let l:i += l:step
                let l:curr_line += 1
        endwhile
endfunction
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 02:32 , Processed in 0.031672 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表