我的视图中有一个变量"x".我需要显示一些代码"x"次.
我基本上想要设置一个这样的循环:
for i = 1 to x
do something on (i)
end
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
我有一个经常出现的代码块,我循环遍历所有成员enum class.
for与新的相比,我目前使用的循环看起来非常笨拙range-based for.
有没有办法利用新的C++ 11功能来减少当前for循环的详细程度?
我希望改进的当前代码:
enum class COLOR
{
Blue,
Red,
Green,
Purple,
First=Blue,
Last=Purple
};
inline COLOR operator++( COLOR& x ) { return x = (COLOR)(((int)(x) + 1)); }
int main(int argc, char** argv)
{
// any way to improve the next line with range-based for?
for( COLOR c=COLOR::First; c!=COLOR::Last; ++c )
{
// do work
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
换句话说,如果我可以做以下事情会很好:
for( const auto& c : COLOR )
{
// …Run Code Online (Sandbox Code Playgroud) 在C#3.0中,我喜欢这种风格:
// Write the numbers 1 thru 7
foreach (int index in Enumerable.Range( 1, 7 ))
{
Console.WriteLine(index);
}
Run Code Online (Sandbox Code Playgroud)
在传统的for循环:
// Write the numbers 1 thru 7
for (int index = 1; index <= 7; index++)
{
Console.WriteLine( index );
}
Run Code Online (Sandbox Code Playgroud)
假设'n'很小,所以性能不是问题,是否有人反对传统风格的新风格?
人们常常在SO的python问题中找到这种类型的表达式.要么只是访问iterable的所有项目
for i in range(len(a)):
print(a[i])
Run Code Online (Sandbox Code Playgroud)
这只是一种繁琐的写作方式:
for e in a:
print(e)
Run Code Online (Sandbox Code Playgroud)
或者为了分配可迭代的元素:
for i in range(len(a)):
a[i] = a[i] * 2
Run Code Online (Sandbox Code Playgroud)
哪个应该是相同的:
for i, e in enumerate(a):
a[i] = e * 2
# Or if it isn't too expensive to create a new iterable
a = [e * 2 for e in a]
Run Code Online (Sandbox Code Playgroud)
或者对索引进行过滤:
for i in range(len(a)):
if i % 2 == 1: continue
print(a[i])
Run Code Online (Sandbox Code Playgroud)
可以这样表达:
for e in a [::2]:
print(e)
Run Code Online (Sandbox Code Playgroud)
或者当您只需要列表的长度而不是其内容时:
for _ in range(len(a)):
doSomethingUnrelatedToA() …Run Code Online (Sandbox Code Playgroud) 在我的代码中,我有一个for循环,它遍历代码方法,直到满足for条件.
反正有没有摆脱这个for循环?
因此,如果我们查看下面的代码,如果我们想要在"15"时打破这个for循环怎么办?
public class Test {
public static void main(String args[]) {
for(int x = 10; x < 20; x = x+1) {
System.out.print("value of x : " + x );
System.out.print("\n");
}
}
}
Outputs:
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x …Run Code Online (Sandbox Code Playgroud) 通过一些旧的公司代码,我遇到了一个看起来像这样的for循环:
for (;;) {
//Some stuff
}
Run Code Online (Sandbox Code Playgroud)
我试过Google但找不到任何答案.我是在编程课上睡着了还是这是一个不寻常的循环?
我只是使用JSHint来绘制一些JavaScript代码.在代码中我有两个for循环,这两个使用如下:
for (var i = 0; i < somevalue; i++) { ... }
Run Code Online (Sandbox Code Playgroud)
因此,两个for循环都使用var i进行迭代.
现在JSHint向我展示了第二个for循环的错误:"'我'已经定义了".我不能说这不是真的(因为它显然是)但我一直认为这无关紧要因为var i仅用于那个特定的地方.
以这种方式使用for循环是不好的做法吗?我应该在我的代码中为每个for循环使用不同的变量
//for-loop 1
for (var i = 0; ...; i++) { ... }
//for-loop 2
for (var j = 0; ...; j++) { ... }
Run Code Online (Sandbox Code Playgroud)
或者这是我可以忽略的错误(因为它不会破坏我的代码,它仍然会做它应该做的事情)?
JSLint顺便说一下.停止在第一个for循环验证,因为我没有在函数的顶部定义var i(这就是我首先切换到JSHint的原因).所以根据这个问题的例子:我应该使用JSLint还是JSHint JavaScript验证? - 无论如何我应该使用像这样的for循环来确认JSLint:
...
var i;
...
//for-loop 1
for (i = 0; ...; i++) { ... }
...
//for-loop 2
for (i = 0; ...; i++) { ... }
Run Code Online (Sandbox Code Playgroud)
这对我来说也很好看,因为这样我应该避免JSLint和JSHint中的错误.但我不确定的是,我是否应该为每个for循环使用不同的变量,如下所示:
...
var i, …Run Code Online (Sandbox Code Playgroud) Python有一个有趣的for语句,允许您指定一个else子句.
在像这样的结构中:
for i in foo:
if bar(i):
break
else:
baz()
Run Code Online (Sandbox Code Playgroud)
该else子句在之后执行for,但仅在for正常终止时(不是由a break)终止.
我想知道C++中是否有相同的东西?我可以用for ... else吗?
在遍历ArrayList,HashMap和其他集合时,是否有任何性能测试结果可用于比较传统的for循环与Iterator?
或者我为什么要使用Iterator for循环,反之亦然?
我听说Java 8提供了很多关于并发计算的实用程序.因此,我想知道并行化给定for循环的最简单方法是什么?
public static void main(String[] args)
{
Set<Server> servers = getServers();
Map<String, String> serverData = new ConcurrentHashMap<>();
for (Server server : servers)
{
String serverId = server.getIdentifier();
String data = server.fetchData();
serverData.put(serverId, data);
}
}
Run Code Online (Sandbox Code Playgroud) java concurrency for-loop java.util.concurrent concurrent-programming