乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 84|回复: 10

[编程交流] “while”循环误解

[复制链接]

5

主题

20

帖子

15

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 09:08:46 | 显示全部楼层 |阅读模式
我希望我的例行程序搜索一个文件,并找到必要的信息来做这件事,它的工作。。。。。但我不知道怎么做。我想知道是否有人能给我解释一下。我不明白的是:
 
我的问题是,什么。我对这方面很陌生,所以我确信这只是我不知道/还没有学会的东西,但不应该有一个表达式来评估吗?或者本质上是说“直到txtline=nil”?
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:17:43 | 显示全部楼层
很高兴再次见到你。。。让我来为您解释一下while函数。
 
只要TestExpression测试为非NIL,就会执行后续表达式。一旦TestExpression测试为NIL,While循环就完成了,代码继续下一行。
 
语法:
  1. (while [color=red]<TestExpression>[/color]
  2. [color=blue]<Expression>[/color]
  3. )

 
使用您的代码示例。。。。
  1. (while [color=red](setq txtLine(read-line f))[/color]
  2. [color=blue]<Expression>[/color]
  3. )

 
编辑:因此,您的代码所做的是“while”变量txtLine有一个值(作为从文件中读取下一行的结果),esle就是这样做的。这将一直持续到文件结束,没有更多的行可读取。
 
供参考:
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:23:50 | 显示全部楼层
 
旁白:
 
因为测试表达式的任何非零返回都将允许while循环继续求值。
 
/挑剔
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:27:53 | 显示全部楼层
 
应得的。
 
谢谢你的澄清,李:眨眼:
回复

使用道具 举报

0

主题

101

帖子

103

银币

限制会员

铜币
-2
发表于 2022-7-6 09:36:27 | 显示全部楼层
嘿Lee或RenderMan,
 
出于好奇,Lisp是否具有Do-While循环的等价物
 
While循环进行测试,然后if T执行代码。
 
 
Do While至少执行一次表达式
 
例如:
(测试时执行[Expr])
 
因此,只要testexpr的计算结果为T,就执行Expr并继续执行Expr
 
谢谢大家
回复

使用道具 举报

5

主题

20

帖子

15

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 09:44:06 | 显示全部楼层
这是有道理的。无论我在工作中读了多少次帮助文件,我都无法把它弄清楚。我一直在想,你需要“评估”一些东西(只思考=,/=,)李
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:47:28 | 显示全部楼层
 
令人惊讶的是,LISP没有这样的构造,但这并不是说你不能自己滚动:
 
  1. (defun DoWhile ( expr test / flag )
  2. (while (not flag)
  3.    (Expr)
  4.    (if (not (test)) (setq flag t))
  5. )
  6. )

 
 
如。
 
  1. 5
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:55:34 | 显示全部楼层
不在AutoLisp/VisualLisp中。Lisp程序的其他一些味道(如普通Lisp程序/Clojure等):http://rosettacode.org/wiki/Loops/Do-while#Common_Lisp 
顺便说一句,我仍然觉得Delphi/Pascal对这种类型的循环有“最佳”的命名(无论如何都是最具描述性/可理解的):重复[表达式]直到[测试]
 
无论如何,您可以在AutoLisp中实现类似的功能,但它不会那么顺利。例如。:
然后您需要使用一些引用部分来调用它,例如:
编辑:Dam!对不起,李没有看到这个。无论如何,我的稍有不同-不需要那些外部lambda!
回复

使用道具 举报

0

主题

101

帖子

103

银币

限制会员

铜币
-2
发表于 2022-7-6 10:00:08 | 显示全部楼层
谢谢各位,
 
VB使用相同的sorto
边做边做直到
http://msdn.microsoft.com/en-us/library/eked04a7.aspx#Y525
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:07:38 | 显示全部楼层
 
别担心
 
我倾向于使用函数的结构(以避免额外变量),但仍然传递lambda函数以避免多重“eval”
 
  1. 8
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 05:32 , Processed in 0.547025 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表