返回信息流gpt怎么说?
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #7661049同步于 2024/10/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖
rust小白提问
IWhisper#478
2024/10/5镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
10 条回复
在 Rust 语言中,虽然 `while true` 和 `loop` 都可以实现无限循环,但 `loop` 被设计出来是为了简化代码的可读性和性能优化。主要有以下几点原因:<br><br>1. **语义明确**:`loop` 语义上更明确,它表示的是无限循环,而 `while true` 是通过布尔条件永远为真来实现循环。使用 `loop` 能更清楚地表达程序员的意图,让代码更易读。<br><br>2. **简化代码**:`loop` 比 `while true` 更简洁,只需要一个关键字即可,减少了冗余的布尔表达式。<br><br>3. **优化空间**:编译器可以对 `loop` 关键字做特定优化,因为它知道这是一个无限循环,而不需要处理布尔条件的判断,这可能会在某些场景下提升性能。<br><br>因此,虽然两者都能实现无限循环,但使用 `loop` 更加直接、高效且有助于代码的可读性。<br>【 在 IWhisper#12 的大作中提到: 】<br><font class="f006">: gpt怎么说? </font>
这就像问其他语言为啥搞那么多循环一样,比如c或者cpp。理论上来说一个for就可以解决所有循环的需求,一个while也可以,为啥非得搞出来三种呢。其实就是为了语义更加明确,更好懂。
为了方便编译器的实现,说白了就是因为 rust 没有 do while<br><br>loop 可以被确定至少会执行一次。然后可以在上面针对性做点 feature, 比如从类型推导的角度上说如果里面没有 break, 那么显然会一直执行下去,类型可以置为 ! (buttom type)。如果有不带参数的 break, 类型会被推成 (),带参 break ['lable] EXPR 的会被推成 EXPR 的类型。<br><br>对于 while 就没做这些东西,类型会被直接推成 (),而且也方便做静态分析,把 while true 用 loop 取代,这样 while 循环和 for 一样可以假定成一次也不会运行。为了保证这一点只需要把 while true 给做成 compile error。
谢谢火箭哥<img src="/img/ubb/em/22.gif" alt="em22" style="display:inline;border-style:none">还是小白没太多能看懂的,截图了希望之后能理解<br>【 在 huojian0514 的大作中提到: 】<br><font class="f006">: 为了方便编译器的实现,说白了就是因为 rust 没有 do while </font><br><font class="f006">: loop 可以被确定至少会执行一次,但是 while 和 for 都不是。然后可以在上面针对性做点 feature, 比如从类型推导的角度上说如果里面没有 break, 那么显然会一直执行下去,类型可以置为 ! (buttom type)。如果有不带参数的 break, 类型会被推成 (),带参 break ['lable] EXPR 的会被推成 EXPR 的类型。 </font><br><font class="f006">: ............ </font>
我更新了一下,你重新看看<br>【 在 IWhisper#478 的大作中提到: 】<br><font class="f006">: 谢谢火箭哥<img src="/img/ubb/em/22.gif" alt="em22" style="display:inline;border-style:none">还是小白没太多能看懂的,截图了希望之后能理解 </font>
<span class="emoji" style="font-size: 16px">😭</span>火箭爹<br>【 在 huojian0514 的大作中提到: 】<br><font class="f006">: 我更新了一下,你重新看看 </font>