首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
k8ser
V2EX  ›  程序员

do...while 语句 ,做了一年开发,从来没用到过,是不是我太菜了。

  •  
  •   k8ser · 297 天前 · 6394 次点击
    这是一个创建于 297 天前的主题,其中的信息可能已经有所发展或是发生改变。
    68 回复  |  直到 2019-03-28 17:47:56 +08:00
    Kaiv2
        1
    Kaiv2   297 天前 via Android
    这。。。怎么联想的。不自信?
    whoami9894
        2
    whoami9894   297 天前 via Android
    用哪种循环结构还不是看个人习惯,而且 Go 里只有个 for
    baronOvO
        3
    baronOvO   297 天前 via Android
    有什么必然关系吗?
    适用场景的问题吧
    fngtz
        4
    fngtz   297 天前 via iPhone   ♥ 36
    没用过这个语句不能说明你菜。

    但是你这样想,大概率还是能说明你菜的。
    terence4444
        5
    terence4444   297 天前
    我会尽量少用这种不确定循环次数的语句,用到就要非常小心退出条件。
    k8ser
        6
    k8ser   297 天前
    谢谢大家,发帖前没有谨慎思考。本意是想知道大家有没有用到。挺常见但是自己几乎没有用到。
    watzds
        7
    watzds   297 天前
    do {…} while(false) 见过吗
    th1nk
        8
    th1nk   297 天前
    laravel 框架从来不用 else,牛逼不牛逼。
    k8ser
        9
    k8ser   297 天前
    @watzds 没有
    @th1nk NB$L
    charliecheng
        10
    charliecheng   297 天前
    我一般都用 try{} catch{}
    sugars
        11
    sugars   297 天前
    不要为了用而用
    Raymon111111
        12
    Raymon111111   297 天前
    4L 说的对
    Variazioni
        13
    Variazioni   297 天前
    三年了。。表示也没用过。。甚至有时候需要先执行过程也想不起 do while。。一直都是用 for。。线程里的永真循环就用 while。。
    k9982874
        14
    k9982874   297 天前
    do..while 在某些情况下函数内代码分块,划分变量作用域,替代 goto 还是很好用的
    binux
        15
    binux   297 天前 via Android
    可以用来优化代码结构,但是不必要。
    arthas2234
        16
    arthas2234   297 天前
    Java。。。一直用 foreach
    Febers
        17
    Febers   297 天前 via iPhone
    用过一次,Java 的 readLine 判空读取文件,用 Kotlin 的时候只能写成 do...while
    Febers
        18
    Febers   297 天前 via iPhone
    @Febers 其实也可以在循环里边 break,但是还是用了 do...while ~倒也说明了很不常用~~~
    zhuangzhuang1988
        19
    zhuangzhuang1988   297 天前
    除了 c /c ++ 里 宏用过 别的地方从来没用过
    Mac
        20
    Mac   297 天前 via Android
    还有人用几百万条 if then 开发游戏呢,能跑就行
    duql
        21
    duql   297 天前
    很不喜欢在 do..while 里 break 来代替 goto 那种代码,增加了一层缩进,也没比 goto 清晰多少
    pkookp8
        22
    pkookp8   297 天前 via Android   ♥ 1
    真想打死说 goto 不好的人,代码结构是看写法,不是看关键字的
    逻辑混乱不用 goto 也混乱
    逻辑清晰 setjump 都能看的明明白白
    darknoll
        23
    darknoll   297 天前
    do...while 不是用来循环的,用来写宏函数的
    mortonnex
        24
    mortonnex   297 天前
    do {}
    while(false)

    这种写法爽的一匹
    galikeoy
        25
    galikeoy   297 天前
    一直用 for 从来没用过 do...while
    des
        26
    des   297 天前 via Android
    do {} while(false) 加 break,只用过这种
    notreami
        27
    notreami   297 天前
    golang 码农表示,完全不知道还有这个玩法。。
    SuperMild
        28
    SuperMild   297 天前
    其实基本上都用 for,连 while 都很少用到( C 语言除外)。
    LiHaiWordGe
        29
    LiHaiWordGe   297 天前
    do {}
    while(false)

    shangfabao
        30
    shangfabao   297 天前
    那你单用过 while 么?
    DOLLOR
        31
    DOLLOR   297 天前
    其他语言不做评论,但是如果在 JS 里用 do{break}while(false)的话,那就真的太菜了,因为 JS 有更优雅的 labeled block 用法。
    k8ser
        32
    k8ser   297 天前
    @shangfabao 记得用过,哈哈
    marsgt
        33
    marsgt   297 天前
    是。
    下一个问题。😉
    marsgt
        34
    marsgt   297 天前
    其实用不用无所谓吧,for 已经基本能满足 90%的场景了。前两天学 c 才知道,Go 语言里连 while 关键字都省了,直接抓 for 来兼职(不分段形式就是 while )……
    jinksw
        35
    jinksw   297 天前
    C 语言会把这个用在定义宏上面
    因为 用别的实现不了

    🤔具体我忘了,不过我在书上看到过,在哪看到的忘了
    R4mble
        36
    R4mble   297 天前
    我都不怎么用 while
    attackonFourier
        37
    attackonFourier   297 天前
    js 循环都可以拿掉 用递归来代替
    cortexm3
        38
    cortexm3   297 天前
    do {} while(0)
    firebroo
        39
    firebroo   297 天前
    c/c++的宏吧。。
    qianji201712
        40
    qianji201712   297 天前
    for foreach while 这三个就够了,do while 个人感觉使用怪怪的,主次颠倒了
    avenger
        41
    avenger   297 天前 via iPhone
    goto 用过吗?;-)
    uleh
        42
    uleh   297 天前
    说明你不是一个 C 程序员 :doge:
    0x11901
        43
    0x11901   297 天前
    虽说这么想确实有点菜,不过讲道理的话还是要看看你用的是什么语言,如果需要编译开编译器优化的话,三种常见的循环结构最终机器码应该是一致的,不一致请去砍写编译器的人🔪
    0x11901
        44
    0x11901   297 天前
    @0x11901 所以只是一个品味问题。
    bravecarrot
        45
    bravecarrot   297 天前 via iPhone
    只用过 for 和 while
    工作一年了 do while 从没用过
    cpp 程序员
    zwh2698
        46
    zwh2698   297 天前 via Android
    可以取消 goto 语句,优化流程。
    RyougiShiki
        47
    RyougiShiki   297 天前
    所以 python 里没有它
    iffi
        48
    iffi   297 天前
    可以用来重试,比较适合语意,即至少执行 1 次。do{请求}while(在重试次数限制范围内 && 第一次请求失败)
    inoki
        49
    inoki   297 天前 via Android
    @watzds PHP src 里 zend engine 的 macro ?
    Akiyu
        50
    Akiyu   297 天前
    我在真实环境下用到的 do{}while(false) 是为了那个 break
    在某一条件不成立的时候可以立马 break 出去
    Joyboo
        51
    Joyboo   297 天前
    golang 一招 for 走天下
    YuTengjing
        52
    YuTengjing   297 天前 via Android
    do while 场景有限,不过一年开发,如果是业务开发,讲道理是应该会碰到过
    xiangyuecn
        53
    xiangyuecn   297 天前
    @watzds #7 do {…} while(false) 用的少,因为多了一个 do,记不住这么多语法。。。不过 while(true){... break}用的炒鸡多。
    herozzm
        54
    herozzm   297 天前
    并不是,go 直接没有 do while,说明这个没有多少存在感
    Nicoco
        55
    Nicoco   297 天前
    表示主力用 for,用 do { } while () 较少
    dremy
        56
    dremy   297 天前 via iPhone
    do … where 用来做重试逻辑很方便啊,where 里面做是否需要重试的判断就好了
    meiyoumingzi6
        57
    meiyoumingzi6   297 天前 via Android
    没用过

    可能因为我是个 python 猿
    bp0
        58
    bp0   297 天前
    有些公司的编程规范要求函数不能多个 return,这时可以用 do{}while(0)加 break 模拟。

    另外一种情况就是正宗的 do while 用法,确实某些情况下需要先执行一次,然后再进行判断。
    yim7
        59
    yim7   296 天前
    python 太菜了,没见过 do while
    qsbaq
        60
    qsbaq   296 天前
    php 中从没用过 do while
    freedomshi
        61
    freedomshi   296 天前
    chtcrack
        62
    chtcrack   296 天前
    do while 和 for 差别很小的..for 写起来会比 do while 简单一些..看个人习惯吧.举例 int i=0;
    while(i<10)
    {
    i++;
    }
    上面的 while 和下面 for 其实执行的都是一个鸟样.
    for(int i=0;i<10;i++)
    {
    }
    jadeity
        63
    jadeity   296 天前
    这就是个冗余的表达方式,存在但是没必要,所以 golang 只有一个 for (非褒非贬)。
    gamexg
        64
    gamexg   296 天前
    go 里面只剩下了 for ...

    另外 c 里面虽然知道,但是印象真没用过。
    Paual
        65
    Paual   296 天前
    do,while {} 可以进行重试机制吧,这个也是看大神的代码的时候看到的
    do {

    //进行相关操作

    } while ($this->result() !=0 $count<3) 可以进行重试机制,当函数 result 的结果不为 0,进行 do while 循环中的内容,也就是当函数结果没有执行成功的时候可以进行循环代码中的代码,也即重试机制
    Paual
        66
    Paual   296 天前
    代码应该是这个:
    $count = 0;
    do {

    //进行相关操作

    } while ($this->result() !=0 && $count<3) 可以进行重试机制,当函数 result 的结果不为 0,进行 do while 循环中的内容,也就是当函数结果没有执行成功的时候可以进行循环代码中的代码,也即重试机制
    viger
        67
    viger   296 天前
    do{}while(0)用的最多,主要是为了解决多层嵌套判断问题。
    当然如果有时候需要先执行一波再来判断的循环也会用到,不过这种场景比较少
    dearmymy
        68
    dearmymy   296 天前
    我就是这么搞的,
    int liRet = -1
    do
    {
    liRet = doSomething()
    if(liRet !=0)
    break
    .....
    liRet = 0
    }while(false)
    return liRet
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   997 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 40ms · UTC 20:37 · PVG 04:37 · LAX 12:37 · JFK 15:37
    ♥ Do have faith in what you're doing.