Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如果inputStream缺少do while语句,如何使用Groovy迭代inputStream中的所有字节?_Loops_Groovy_Do While - Fatal编程技术网

Loops 如果inputStream缺少do while语句,如何使用Groovy迭代inputStream中的所有字节?

Loops 如果inputStream缺少do while语句,如何使用Groovy迭代inputStream中的所有字节?,loops,groovy,do-while,Loops,Groovy,Do While,既然Groovy没有do while语句,我如何迭代输入流中的所有字节 根据a: 不,不要。。。while()'语法 由于模棱两可,我们尚未添加对do.的支持。。当你到Groovy的时候 在Groovy中执行以下Java代码的最佳方法是什么 def numRead = inputStream.read(fileBytes, 0, fileBytes.length); do{ } while(numRead > 0); (我知道我可以使用布尔值来实现这一点,我只想知道是否有一种“Groo

既然Groovy没有do while语句,我如何迭代输入流中的所有字节

根据a:

不,不要。。。while()'语法

由于模棱两可,我们尚未添加对do.的支持。。当你到Groovy的时候

在Groovy中执行以下Java代码的最佳方法是什么

def numRead = inputStream.read(fileBytes, 0, fileBytes.length);
do{

} while(numRead > 0);
(我知道我可以使用布尔值来实现这一点,我只想知道是否有一种“Groovy”的实现方式)

Groovy(1.8版+)的实现方式如下:

inputStream.eachByte(BUFFER_SIZE) { buffer, numRead ->
    ...
}
使用以下命令:

for(;;){ // infinite for
    ...

    if( numRead == 0 ){ //condition to break, oppossite to while 
        break
    }
}

我知道这是一个老生常谈的问题。但这是谷歌搜索“groovy do while”时第一个弹出的内容

我认为Groovy中的同义词可以是:

while ({
    ...

    numRead > 0
}()) continue
请考虑上面的例子。除了一些“多余”的括号外,它的语法可读性相当好

下面是它的工作原理:

  • 在<代码>的内部,当<代码>条件圆括号时,闭合定义为开放的卷曲括号
  • 在花括号关闭后,闭包与内圆括号对内联执行
  • 闭包内最后一行的值是当为false时将中断循环的值(它是从闭包返回的)
  • continue
    after while条件结束圆括号只是因为必须有“某物”,任何可编译语句。例如,它可能是
    0
    ,但
    continue
    似乎更适合
  • 编辑:不确定它是Groovy的新版本还是我以前错过了。 相反,
    continue
    分号也可以。然后是这样的:

    while ({
        ...
    
        numRead > 0
    }());
    

    谢谢,这正是我想要的。@ataylor我如何将此方法应用到另一个只有循环内部才知道
    缓冲区大小的场景中?简单地说,如果不进入循环,我不知道
    缓冲区大小的值。Tim yates给出了更好的答案: