도와 주세요.:스위치 파서 기능
Help![]() |
"#switch"로 코드화된 스위치 파서 기능은 선택 목록에서 첫 번째 일치 분기를 선택하여 대/소문자를 구분합니다.
각 분기는 값, 식(계산) 또는 템플릿 [1]호출이 될 수 있으며, 평가되고 스위치의 값과 일치하도록 비교됩니다.많은 #switch 구조가 단순한 값 집합 사이에서 분기하는 데 사용되지만, 분기에는 if-elseif-elseif-else 구조로 작용하여 true를 테스트할 때까지 테스트할 전제 조건 집합으로 작용하는 부울식도 포함될 수 있습니다.스위치 값은 숫자가 아닌 문자열로 비교되므로 "5"는 다음과 비교되지 않는 한 "5.00"과 일치하지 않습니다."{{#expr:{{{1 5.00}}} }}" (="5")
.
#스위치는 1,000개 이상의 분기를 포함할 수 있지만, 속도를 향상시키려면 여러 개 또는 내포된 각 부품에 100개 미만의 분기를 갖도록 분할해야 합니다.상위 분기가 더 빨리 실행되고 하위 분기는 모든 상위 분기의 비교를 기다려야 합니다.파서 기능이기 때문에 #switch는 문서 텍스트에서도 모든 페이지 내에서 사용할 수 있지만 대부분의 경우 템플릿에 전달된 매개 변수 값에 따라 분기하기 위해 템플릿 내에서 #switch가 일반적으로 사용됩니다.
일반 포맷
그#switch 기능은 한 줄 형식일 수 있습니다.
{{#스위치: {{x}}} 1=1개 2=2개 3 4 5=범위 3-5 기타}}
해당 한 줄의 #스위치는 {{x}}의 값을 읽습니다.값이 1이면 "1"을 반환합니다.값이 2이면 "2"를 반환합니다.값 3, 4 또는 5의 경우 "범위 3-5"를 반환합니다.다른 값 또는 null 값의 경우 "other"를 반환합니다.
그러나 대부분의 경우 #switch 기능은 다음과 같이 각 분기가 서로 다른 줄에 있는 다중 줄 형식입니다.
{{#switch: {{x}}} 1 = 1 2 = 2 #default = 기타 34 5 = 3-5 중 하나인 {{#expr: 2*3}} = 6 {{#expr: 2*3+1}} = {lc:SEVEN}} <!-- 소문자--> }}
이것은 기본 대소문자를 지정하는 다른 방법을 보여줍니다. 대소문자는 처음, 마지막 또는 중간에 표시될 수 있습니다.
기본값을 지정하지 않고 제공된 값과 일치하는 대소문자가 없으면 null 값이 반환됩니다.
#스위치의 각 분기에 대해 등호 "="의 한 쪽은 단순 값, 식 또는 템플릿 호출이 될 수 있습니다.
스위치를 if-elseif처럼 사용
#스위치 기능은 하나가 참이 될 때까지 테스트되는 일련의 사전 조건으로 구성될 수 있습니다("1"과 동일).예를 들어, 숫자가 0으로 분할되지 않도록 사전 선별하는 공식은 다음과 같이 하십시오.x/x2 + y/y2
{{#switch}:1 {{#ifeq}:{{x2 none}} 없음 10} = 매개 변수 x2에 데이터가 없습니다. {{#ifeq:{{y2 none}} {none 10}} 없음} = 매개 변수 y2에 데이터가 없습니다. {{#expr:{{x2}}} = 0} = 매개 변수 x2는 0이므로 나눌 수 없습니다. {{#expr:{{y2}}} = 0} = y2 매개 변수는 0이므로 나눌 수 없습니다. 1 = {{#expr:{{x}}}/{{x2}}+{{y}}}/{{y2}}}}}}}}}
x2 및 y2를 테스트할 때 둘 중 하나가 0(없음)이면 #스위치는 x, y, x2 및 y2 양의 가중 평균을 계산하는 대신 경고 메시지로 끝납니다.각 분기는 전제 조건으로 작용하므로 전체 #스위치 구조는 if-elseif-elseif-elseif-elseif-elseif-elseif-elseif-elseif-else와 동일하게 수행됩니다.비교된 두 가지 데이터 유형에 유의하십시오.
- 알파벳 데이터
- 영문자 문자열은 에서 비교할 수 있습니다.
#switch
을 이용하여#ifeq:
다음과 같이:{{#ifeq:{{{x2 none}}} none 1 0}}
, - 여기서 결과는 참일 경우 "1"이고 거짓일 경우 "0"입니다.
- 숫자 데이터
- 일부 숫자는 다음에서 비교할 수 있습니다.
#switch
을 이용하여#expr:
다음과 같이:{{#expr: {{{y2}}} = 0}}
또는{{#expr: {{{x}}} < 41500}},
- 여기서 각 결과는 참일 경우 "1"이고, 거짓일 경우 "0"입니다.
또 다른 예는 양 "n"을 테스트하여 소수 자릿수를 확인하는 방법입니다.
{{#expr: floor{n}}*100) <> {{{n}}*100}} = 3 {{#expr: floor{n}}*10) <> {{{n}}} = 2 {{#expr: floor({{n}}})}} <> {{{n}}}}} = 1 = {{#exproor: {{n}}}}} mod} = {{3#exproor{n}}}} {{n}}}}}} {{n} = 0
이는 "#switch: 1"을 사용하여 일련의 사전 조건을 차례로 테스트한 후 하나가 참이 될 때까지 쌓아 올리는 또 다른 예입니다("1"과 동일).
성능 고려 사항
상당한 성능 문제가 발생할 정도로 복잡한 스위치 문을 사용하는 템플릿은 Lua로 변환해야 합니다. 그러면 템플릿이 더 간단해지거나 훨씬 더 빨라집니다.아래의 논의는 관련성이 거의 없어야 하지만 참고를 위해 보존됩니다.
#스위치에는 1,000~2,000개 이상의 분기가 포함될 수 있지만, 여러 개 또는 내포된 부분에 100개 미만의 분기가 있도록 분할해야 합니다.경우에 따라 여러 개의 #switch 구조로 분할될 수 있습니다. 예를 들어, 많은 경우 동일한 첫 번째 문자를 사용하는 경우가 있습니다.그 다음, 사용{{padleft: 1 {{{value}}} }}
의 첫 글자를 추출할 수 있습니다.{{{value}}}
최상위 문자로 분기되는 상위 #스위치에 사용되며, 하위 또는 "#default" 분기에 다른 모든 스위치가 그 뒤를 따릅니다.또 다른 일반적인 분할은 숫자 값을 자주 사용하는 범위로 구분한 다음 다른 모든 범위로 구분하는 것일 수 있습니다.
#switch의 상위 분기는 더 빨리 실행되며 하위 분기는 모든 상위 분기의 비교를 기다려야 합니다.따라서 초기 분기에서 데이터의 사전 검사가 수행되지 않는 한 상위 분기가 가장 많이 사용되는 경우여야 합니다.
노트
- ^ 템플리트 호출(템플릿 태그라고도 함)은 템플리트 페이지 이름 양쪽에 두 개의 "괄호"가 있으며 "Template:" 접두사가 필요하지 않습니다.예를 들어 다음은 동등한 템플릿 호출입니다. 및 .