我决定今天学习一些 Python (IronPython) 语法。在这样做的过程中,我对它允许的循环结构印象深刻。
Pythonelse
在其循环上支持一个子句。一个else
循环基本上是说,“如果这个循环正常完成,那么进入这个子句”。
请允许我演示使用 C#。
这段代码:
Something something = SomeCallToSetThisUp();
bool isCompatable = false;
foreach (Widget widget in widgets)
{
isCompatable = widget.IsCompatableWithSomething(something);
if (!isCompatable)
break;
}
if (isCompatable)
compatableSomethings.Add(something);
可能成为此代码(无效的 C#):
Something something = SomeCallToSetThisUp();
foreach (Widget widget in widgets)
{
if (!widget.IsCompatableWithSomething(something));
break;
}
else
compatableSomethings.Add(something);
从来没有见过这个,它让我觉得很酷。一旦你学会了它,它看起来就像我见过的任何代码一样可读。
虽然不是普遍需要(有时您想影响列表中的每个项目),但我确实认为它会很有用。
所以,我的问题是:为什么这不在 C# 中?
我有几个想法为什么:
break
会使调试更加困难,因此设计者不想鼓励它。- 并非所有闪亮的东西都能融入语言。(范围有限)。
但这些只是猜测。 我要求一个实际的规范原因。