- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
What the spec says on the subject:
Iteration loops have the form:
IM IN YR <label> <operation> YR <variable> [TIL|WILE <expression>]
<code block>
IM OUTTA YR <label>
Where <operation> may be UPPIN (increment by one), NERFIN (decrement by one), or any unary function. That operation/function is applied to the <variable>, which is temporary, and local to the loop. The TIL <expression> evaluates the expression as a TROOF: if it evaluates as FAIL, the loop continues once more, if not, then loop execution stops, and continues after the matching IM OUTTA YR <label>. The WILE <expression> is the converse: if the expression is WIN, execution continues, otherwise the loop exits.
UPPIN
的大多数用途来说基本没问题,对于
NERFIN
的大多数(我的)预期用途来说,它是完全关闭的。 .我在其他语言中对递减循环变量的最常见用途是“重复 n 次(n 未重用)”习语和字符串操作,无论如何这在 LOLCODE 中都不是一个好主意。
NERFIN
以比
UPPIN
的等价物更简洁的方式获得从 n 到 1 或 0 的循环递减还是无操作的循环形式?
UPPIN
打印 5 4 3 2 1变体:
IM IN YR LOOPZ UPPIN YR COWNTR TIL BOTH SAEM COWNTR AN 5
VISIBLE DIFF OF 5 AN COWNTR
IM OUTTA YR LOOPZ
I HAS A COWNTR ITZ 5
IM IN YR LOOPZ
VISIBLE COWNTR
COWNTR R DIFF OF COWNTR AN 1
BOTH SAEM COWNTR AN 0, O RLY?
YA RLY, GTFO, OIC
IM OUTTA YR LOOPZ
NERFIN
:
IM IN YR LOOPZ NERFIN YR COWNTR TIL BOTH SAEM COWNTR AN -5
VISIBLE SUM OF 5 AN COWNTR
IM OUTTA YR LOOPZ
NERFIN
?
UPPIN
可读性差(哈!)变体;没有冗长的收获。
NERFIN
以比
UPPIN
的等价物更简洁的方式获得从 n 到 1 或 0 的循环递减还是无操作的循环形式?
最佳答案
2007 年就有关于这个确切主题的设计讨论。当时的共识似乎建议添加 FROM
作为工作组希望快速进入 1.2 的解决方案:
http://forum.lolcode.com/viewtopic.php?pid=2484
该问题已提交,但并未纳入 1.2 规范。但是,它显然在 1.3 规范中:
http://lolcode.com/proposals/1.3/loop2
不过还在进行中。我检查过,它不在存储库的“ future ”分支中。我们可以通过查看循环解释器代码来看到这一点。截至 2011 年 8 月 24 日(在修订版 72c983d0667d4d650657e1b7c5f4c7054096b0dd 中)它仍然总是最初分配循环变量 a NUMBR
共 0 个:
https://github.com/justinmeza/lci/blob/72c983d0667d4d650657e1b7c5f4c7054096b0dd/interpreter.c#L3434
但是,即使使用旧规范,理论上也应该可以使用 TROOF
结合针对 -1 的测试,以实现从 5 到 0 倒计时的相对简洁的形式:
BTW countdown-test.lol
CAN HAS STDIO?
HAI 1.2
HOW DUZ I COUNTDOWN YR BOWNDZ
I HAS A FIRSTIES
FIRSTIES R WIN
IM IN YR LOOPZ NERFIN YR COWNTR TIL BOTH SAEM COWNTR AN -1
FIRSTIES
O RLY?
YA RLY
COWNTR R BOWNDZ
FIRSTIES R FAIL
OIC
VISIBLE COWNTR
IM OUTTA YR LOOPZ
IF U SAY SO
COUNTDOWN 5
KTHXBYE
R
修改循环变量。 :
interpreter.c
说
if (0 && stmt->update->type == ET_OP)
为
countdown-test.lol
制作代码按预期运行。如果您不必与未修补的安装共享代码,它可能是现有 1.2 LOLCODE 部署的合适临时解决方案。
关于loops - LOLCODE 中的 NERFIN 循环操作有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6124995/
What the spec says on the subject: Iteration loops have the form: IM IN YR YR [TIL|WILE ] IM
我是一名优秀的程序员,十分优秀!