Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
Improve this question
C#具有生成器函数,其语法如下:
生成器表达式是我对编程语言感兴趣的一个功能(类似于Java,Scala,ActionScript和C#的简单的面向对象编程)。这些本质上是生成器功能的语法糖。
我当前最喜欢的候选人是以下语法:
表达式
所以我的问题是,您希望使用C#/ Java / Scala / ActionScript类型语言为生成器表达式选择哪种语法,为什么?
可能会影响响应的一些因素包括Scala和ActionScript,我的语言中的类型在类型之后声明。例如:
匿名函数也如下所示:
除此之外,我的其他语言语法类似于Java或C#。我的语言有一个
在这里,我假设正确的端点未包含在范围内。
老实说,当我在Python中看到这个时,我不得不怀疑:“以什么代价?”
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
Improve this question
C#具有生成器函数,其语法如下:
IEnumerable<int> GetNats(int max)
{
for (int i=0; i < max; ++i)
yield return i;
}
生成器表达式是我对编程语言感兴趣的一个功能(类似于Java,Scala,ActionScript和C#的简单的面向对象编程)。这些本质上是生成器功能的语法糖。
我当前最喜欢的候选人是以下语法:
IEnumerable<int> nats =
witheach (i in range(0, 42))
yield i * 2;
表达式
range(0, 42)
是内置的生成器函数。所以我的问题是,您希望使用C#/ Java / Scala / ActionScript类型语言为生成器表达式选择哪种语法,为什么?
可能会影响响应的一些因素包括Scala和ActionScript,我的语言中的类型在类型之后声明。例如:
var myVar : SomeType = initialValue;
匿名函数也如下所示:
var myFunc = function(int x) {
return x + 1;
}
除此之外,我的其他语言语法类似于Java或C#。我的语言有一个
foreach
语句,它与C#非常相似。 最佳答案
还有Python's方法-生成器没有特殊的语法;仅需要一个“ yield”语句即可。可以使用任何带有块的语句,尽管我希望只找到实际使用的循环:
IEnumerable<int> nats =
for (i in range(0,42))
yield i*2
String phrase = "I want to buy some cheese.";
IEnumerable<int> substrs =
for (i in 0 .. phrase.length)
for (j in i .. phrase.length+1)
yield phrase[i..j]
在这里,我假设正确的端点未包含在范围内。
老实说,当我在Python中看到这个时,我不得不怀疑:“以什么代价?”