호출자가 값을 무시하거나 인스턴스 변수를 기본값으로 사용할 수있는 메서드 집합이 있습니다. 나는이 모든 곳에서MooseX :: Method :: Signatures를 인스턴스 변수 기본값으로 설정합니다.
method foo(Str :$blah?) {
$blah = $self->blah unless defined $blah;
#doStuff
}
끔찍한하지 않음 일을 끝낼 수 있도록 구문 분석 오류가 발생
method foo(Str :$blah = $self->blah) {
#doStuff
}
,하지만 바보 같다 때 MooseX :: 방법 :
그래서 내가 뭘하려고 계속 것은 :: Signatures는 기본 개념을 지원하고 다른 모든 표준 'method of start'행을 고정했습니다.
언제나 이와 같은 일을하려고 할 때 웹에서 다른 사람을 찾을 수 없으며 동일한 문제가 발생하면 문제를 잘못된 방식으로 접근하고 있습니다. 메소드가 객체에서 작동하는 메소드가 아니라 외부를 호출하는 헬퍼 함수이기 때문에 실제 프로그램보다 오히려 기능적 프로그램을 잼 (jam)하려고 시도하는 것처럼 보입니다. 그래서 그냥 잘못 정의하고 있는지 또는 내가하고있는 일이 "벙어리"인지 아니면 Parse :: Method :: Signatures에 의해 지원되지 않는지를 확인하면됩니다.
나는 상수 값이 아닌 것들에 대해 알아 보겠습니다. 필자는 내 머리 속에''정의되지 않은''또는'// ='코드처럼 작동하도록 호출을 기대했다. 이것은 전적으로 근거가없는 가정에 기반을 둡니다. 메소드 서명은 표현하고 삽입 한 하위로 파싱되며 실제 메소드 호출을 위해 $ self를 남겨 둡니다. 소스를 둘러보고 실제로 무엇을하는지 볼 시간입니다. 정의 또는 팁을 주셔서 감사합니다, 그 전에 본 적이 없었어요. – Matt