“while”循环误解
我希望我的例行程序搜索一个文件,并找到必要的信息来做这件事,它的工作。。。。。但我不知道怎么做。我想知道是否有人能给我解释一下。我不明白的是:我的问题是,什么。我对这方面很陌生,所以我确信这只是我不知道/还没有学会的东西,但不应该有一个表达式来评估吗?或者本质上是说“直到txtline=nil”? 很高兴再次见到你。。。让我来为您解释一下while函数。
只要TestExpression测试为非NIL,就会执行后续表达式。一旦TestExpression测试为NIL,While循环就完成了,代码继续下一行。
语法:
(while <TestExpression>
<Expression>
)
使用您的代码示例。。。。
(while (setq txtLine(read-line f))
<Expression>
)
编辑:因此,您的代码所做的是“while”变量txtLine有一个值(作为从文件中读取下一行的结果),esle就是这样做的。这将一直持续到文件结束,没有更多的行可读取。
供参考:
旁白:
因为测试表达式的任何非零返回都将允许while循环继续求值。
/挑剔
应得的。
谢谢你的澄清,李:眨眼: 嘿Lee或RenderMan,
出于好奇,Lisp是否具有Do-While循环的等价物
While循环进行测试,然后if T执行代码。
Do While至少执行一次表达式
例如:
(测试时执行)
因此,只要testexpr的计算结果为T,就执行Expr并继续执行Expr
谢谢大家 这是有道理的。无论我在工作中读了多少次帮助文件,我都无法把它弄清楚。我一直在想,你需要“评估”一些东西(只思考=,/=,)李
令人惊讶的是,LISP没有这样的构造,但这并不是说你不能自己滚动:
(defun DoWhile ( expr test / flag )
(while (not flag)
(Expr)
(if (not (test)) (setq flag t))
)
)
如。
5 不在AutoLisp/VisualLisp中。Lisp程序的其他一些味道(如普通Lisp程序/Clojure等):http://rosettacode.org/wiki/Loops/Do-while#Common_Lisp
顺便说一句,我仍然觉得Delphi/Pascal对这种类型的循环有“最佳”的命名(无论如何都是最具描述性/可理解的):重复[表达式]直到[测试]
无论如何,您可以在AutoLisp中实现类似的功能,但它不会那么顺利。例如。:
然后您需要使用一些引用部分来调用它,例如:
编辑:Dam!对不起,李没有看到这个。无论如何,我的稍有不同-不需要那些外部lambda! 谢谢各位,
VB使用相同的sorto
边做边做直到
http://msdn.microsoft.com/en-us/library/eked04a7.aspx#Y525
别担心
我倾向于使用函数的结构(以避免额外变量),但仍然传递lambda函数以避免多重“eval”
8
页:
[1]
2