재미있는 질문 : 나는 슬쩍 방법과 결합 된 스택으로의 ArrayList를 사용했다.
여기서 중요한 문제는 반복을 통해 일부 상태를 전달해야한다는 것입니다. 이 작업을 수행하는
한 가지 방법은 외부 변수를 사용할 수 있었다 (내가 문자열의 배열 대신 파일 및 File#eachLine
의 List#each
를 사용하고 여기에,하지만 그들은 유사해야 함) :
def lines = [
"Single line.",
"Long \\",
"line \\",
"continuation.",
"Single line."
]
def processLine(line) { println "Processing \"$line\""}
def continuation = ''
lines.each { line ->
line = continuation + line
if (line.endsWith('\\')) {
continuation = line.take(line.size() - 1)
}
else {
processLine(line)
continuation = ''
}
}
또 다른를 우리가 먼저 처리를 한 후 계속 라인에 가입하고있어이 경우
lines = lines.inject([]) { list, line ->
if (list && list[-1].endsWith('\\'))
list[-1] = list[-1][0..-2] + line
else
list << line
list
}
lines.each { processLine(it) }
: 방법은 특별히 Collection#inject
처럼 interations 불구하고 상태를 수행하기위한 반복자를 사용하는 것입니다.
두 경우 출력은 다음과 같습니다
나는 일반적으로 같은 반복자 주위에 장식을 사용