我有兴趣做这样的事情(C#):
int sum = 0;
for (int i = 0; i < 5; i++)
sum += i;
但我想在一条线上做。类似的东西:
int sum = (embedded loop)
有没有办法在一条线上做到这一点?我希望将其应用于更复杂的字符串操作算法,因此我不能简单地用算术公式替换循环。
答案 0 :(得分:2)
所以你想循环并在一行中做某事?
首先,将它写在一行并不会让它运行得更快。你仍然会循环,你仍然是O(n)
。对于您在问题中遇到的特定问题,您可以执行以下操作:
var sum = Enumerable.Range(0,5).Sum();
这基本上会产生数字0,1,2 ... 4的集合并将它们相加。
更一般地说,由于你想要某些东西,你可以使用Aggregate
函数。例如:
var str = Enumerable.Range(0,5).Aggregate("",(p,c) => p + c); // Note: not efficient at all
将取值0,1,... 4并与它们进行字符串连接(使用字符串构建器会更好)为您提供字符串01234
。
修改强>
我试图遍历一个单词列表并使每个标题都成为案例,然后返回字符串[]。join(&#34;&#34;)
在这种情况下,例如:
var result = string.Join(" ", myListOfWords.Select(w => char.ToUpper(w[0]) + w.Substring(1)));
应该可以正常工作。
答案 1 :(得分:1)
如果你不介意'sum'只在for循环的范围内,你可以这样做:
for (int i = 0, sum = 0; i < 5; sum += i, ++i) { // do something }
答案 2 :(得分:0)
for(int i=0,sum = 0; i<5; sum+=i,++i){}