2
나는 노동자 내부에 일부 코드를 리팩토링을 시도하고 오류를 받고 있어요 :어떻게 변수를 발레리나 직원에게 전달합니까?
는 근로자가 위의 범위에서 변수를 참조 할 수없는 것 같다
정의되지 않은 심볼 사용자 ID. 작업자가 전달되는 매개 변수를 보도록하려면 어떻게해야합니까?
import ballerina.net.http;
import ballerina.lang.messages;
import ballerina.lang.jsons;
@http:BasePath ("/foo")
service barApi {
http:ClientConnector endpointEP = create http:ClientConnector("http://example.com");
@http:GET
@http:Path("https://stackoverflow.com/users/{userId}")
resource users (message m,
@http:PathParam("userId") string userId) {
worker sampleWorker(message m) {
string requestPath = "/user/" + userId;
message response = http:ClientConnector.get(endpointEP, requestPath, m);
근로자는 현재 해당 범위에서 변수를 볼 수 없습니다. 그것은 발레리나의 현재 버전에서 디자인에 의해 제한됩니다. 그러나 우리는 당신이 다른 변수를 작업자에게 넘겨 줄 수있는 곳에서이 행동을 개선하기위한 토론을 거의하지 못했습니다. 현재 메시지를 전달할 수 있습니다. 자세한 내용은 https://github.com/ballerinalang/ballerina/blob/master/docs/specification/workers.md를 참조하십시오. –
@SameeraJayasoma 현재 언어 구문 분석기는 너무 제한적입니다. 예를 들어 작업자 블록 바로 위의 메시지를 통해 데이터를 전달할 수있는 메시지를 변경할 수없는 것처럼 보입니다. 또한 worker 내에서 사용되는 \ @http :: BasePath 섹션 위에 global endpointEP를 정의 할 수 없습니다. – geekaholic
위의 내용을 추가하려면 const 인 한 전역을 정의 할 수있었습니다. 상수 전역 만 허용하고 변수는 허용하지 않는 설계 이유는 무엇입니까? – geekaholic