有没有办法使用for循环作为条件?像这样的东西?
if((for(int x = 0; x < 5; x++){if(x == 2){return true;}return false;}) == true)
编辑:
另一个例子
if(for(int x = 0; x < 5; x++) == 2)
我只是想知道它是否可以完成。根据我的问题,我希望Blagovest Buyukliev和marzapower的答案是准确的。谢谢你的回复。
答案 0 :(得分:2)
这可能取决于您编写代码的语言。通常,for
循环不会返回值,除非您将它们包含在anonymous function中,通常也称为lambda函数。
在ruby
中你可以用这种方式完成这样的事情:
res = lambda {|array| for i in array do return true if i == 2 end }.call(0..4)
但是在Java
中,如果不定义新方法,你将无法轻易做到这一点。
一般来说,程序方法(如ruby
,perl
,python
,lisp
等)将为您提供处理匿名函数的内置方法,同时其他语言(如C
,C++
,Java
等不具备这些特征。
顺便说一句,应该很清楚for
循环是所有语言中的构造而不是函数,所以它永远不应该返回一个值(如整数或布尔或其他任何东西)但是只处理通过处理器的代码流。匿名函数使我们能够在内联函数中包含简单的控制代码。
答案 1 :(得分:2)
这没有多大意义,因为C-ish循环只是执行控制结构。没有类型可以说循环一般都有。
从您的示例中,您所要求的内容是能够添加简单的内联函数,而无需实际转到其他地方并使用自己的名称和诸如此类的东西写下完整函数。这些被称为lambdas。
如果您正在使用C,我建议您只创建小型函数(甚至可能是宏 - ick)来构建并返回您想要的类型。
如果你正在使用C ++,那么你可能感兴趣的<algorithm>
和<functional>
标准库中有一些东西。对于你给出的例子,我认为find_if()
会做你做的事情正在找。一般来说,这些东西比PITA更值得使用。你必须创建一个完整的谓词对象才能做到这一点,这比创建你的单行函数更多的代码和工作一样。
Boost adds lambda support到C ++,下一个标准应该正确地添加到语言中。
大多数函数式语言都支持lambdas,但它们通常不使用这样的C语法。
答案 2 :(得分:1)
不,因为它们都是陈述。你需要在if条件中使用表达式。此外,return语句返回已使用它的函数。
为什么你会这样做?
答案 3 :(得分:1)
在大多数语言中,没有。
for
是语句,而不是运算符。与运算符不同,语句不会产生结果,也不能嵌套到表达式中。 if
语句的条件需要一个可以计算为布尔值的表达式,而不是语句。
在Perl和Python等语言中,您可能需要查看map
运算符。
答案 4 :(得分:0)
这不是好风格。拆分它。如果你正在尝试使用单行程,那么Java就是我的朋友错误的语言。