0
- 할당은 조건문에서 허용되지 않습니다.
- 정규 표현식 일치의 상태는 다른 일치 정보가 포함 된 반환 된 일치 객체를 기반으로 결정됩니다. 다음과 같이
m = pat1.match(buffer) if m: tok = tok1 val = m.group(0) else: m = pat2.match(buffer) if m: tok = tok2 val = m.group(0) else: m = pat3.match(buffer) if m: tok = tok3 val = m.group(0) # extra processing here and there - makes looping unsuitable else: m = pat4.match(buffer) if m: tok = tok4 val = m.group(0) else: # ... keep indenting
우리는 정말 뭔가를하고 싶은 :
이제 우리는 10 또는 15에서 특정 패턴과 일치하고 싶은 말은, 우리는 다음과 같이 어수선하게 뭔가 결국
if match ... pat1:
tok =
val =
elif match ... pat2:
tok =
val =
elif match ... pat3:
tok =
val =
...
(조건부 할당, 표준 일치 개체의 부작용, 참조 함수에 의한 다른 형식의 일치 함수 등)를 사용하는 다른 언어에서도 가능합니다.
패턴을 실행하기 위해 루프를 사용할 수도 있지만 일치하는 항목마다 처리 방법이 다를 경우 이 적합하지 않습니다.
그래서 : 일치하는 조건을 동일한 수준으로 유지하는 멋진 비단뱀 같은 방법이 있습니까?! 쌍으로 토큰과 패턴을 통해
루프 바람직하지 않다 - 각 지점에 대한 처리의 변화가있을 수있다 - PLS 문제를 확인한다. –
@BaselShishani 당신이 얻을 수있는 가장 가까운 것은 디스패치 모델을 사용하는 것입니다 ... 업데이트 된 답변보기 - 물론 테스트의 두 항목 모두 호출 가능하고 다시 컴파일 된 객체가 될 수 없습니다 –
방법으로 초고속 답변을 주셔서 감사합니다 . –