groovy에서 함수 반환에서 여러 매개 변수를받는 방법
groovy로 작성된 함수에서 여러 값을 반환하고 받고 싶지만 오류가 발생합니다.
값이 '[a, b]'인 org.codehaus.groovy.ast.expr.ListExpression 클래스는 할당 연산자의 왼쪽으로 잘못된 표현식입니다.
내 코드는
int a=10
int b=0
println "a is ${a} , b is ${b}"
[a,b]=f1(a)
println "a is NOW ${a} , b is NOW ${b}"
def f1(int x) {
return [a*10,a*20]
}
거의 가지고 있습니다. 개념적으로는 [ a, b ]
목록을 생성하고, ( a, b )
당신이 원하는, 그래서 하나를 펼쳤다 (a,b)=f1(a)
대신 [a,b]=f1(a)
.
int a=10
int b=0
println "a is ${a} , b is ${b}"
(a,b)=f1(a)
println "a is NOW ${a} , b is NOW ${b}"
def f1(int x) {
return [x*10,x*20]
}
동일한 유형일 필요가없는 객체를 반환하는 또 다른 예 :
final Date foo
final String bar
(foo, bar) = baz()
println foo
println bar
def baz() {
return [ new Date(0), 'Test' ]
}
또한 선언과 할당을 결합 할 수 있습니다.
final def (Date foo, String bar) = baz()
println foo
println bar
def baz() {
return [ new Date(0), 'Test' ]
}
반환 값이 다음과 같이 한 줄에 저장되는 변수를 선언하고 할당 할 수 있습니다. 이는 Justin의 답변에 사용 된 구문보다 약간 더 간결한 구문입니다.
def (int a, int b) = f1(22)
In your particular case you may not be able to use this because one of the variables passed to f1
is also used to store a return value
When running Groovy in the context of Jenkins pipeline job the above answers do not work (at least on version 2.60.2), but the following does:
node {
obj = ret2()
fw = obj[0]
lw = obj[1]
echo "fw=${fw}"
echo "lw=${lw}"
}
def ret2()
{
return [5, 7]
}
Or alternatively:
node {
obj = ret2()
fw = obj.a
lw = obj.b
echo "fw=${fw}"
echo "lw=${lw}"
}
def ret2()
{
return [a:5, b:7]
}
ReferenceURL : https://stackoverflow.com/questions/6757539/how-to-accept-multiple-parameters-from-returning-function-in-groovy
'programing' 카테고리의 다른 글
NSArray를 사용하여 otherButtonTitles를 지정 하시겠습니까? (0) | 2021.01.10 |
---|---|
셀이 텍스트를 변경할 때 행 색상을 변경하는 스크립트 (0) | 2021.01.10 |
없음 또는 (없음, 없음)을 반환해야합니까? (0) | 2021.01.10 |
win32 콘솔이 ANSI / VT100 이스케이프 시퀀스를 인식하도록하는 방법은 무엇입니까? (0) | 2021.01.10 |
python pandas 데이터 프레임 열은 dict 키 및 값으로 변환 (0) | 2021.01.10 |