r302
r1
1[[분류:테스트]]
r289
2{{{#!if ms='style="display: inline; font-family: monospace;"', h='hide'
r297
3}}}{{{#!wiki style="border: 1px solid gray; border-top: 5px solid #4188f1; padding: 12px"
4[[파일:CC BY-NC-SA 버튼.svg|width=100&align=right]]'''{{{+2 포크 이용허락 안내}}}'''
5
6{{{#!folding [ 펼치기 · 접기 ]
7[include(틀:CCL, 라이선스=CC BY-NC-SA 2.0 (KR or Unported), 아이디=disciple153)]
8}}}}}}
9[목차(@h@)]
r291
10{{{-3 (@h@되어 있는 목차를 눌러 펼쳐보실 수 있습니다.)}}}
r24
11== 개요 ==
r30
12[[https://namu.wiki/w/%EB%82%98%EB%AC%B4%EC%9C%84%ED%82%A4:%EB%AC%B8%EB%B2%95%20%EB%8F%84%EC%9B%80%EB%A7%90/%EC%8B%AC%ED%99%94#if|나무위키:문법 도움말/심화 문서의 if 문단]]도 참고.
13
r81
14if 구문(if 문법) 테스트용 [[위키위키]] 문서.
15편집하거나 검증할 때 RAW(원문)를 참조할 수 있다.
16if 구문은 문서에서만이 아니라 토론 스레드에도 지원된다.
r24
17== true, false ==
r1
18{{{#!undefined_command @a@==1
191}}}
r290
20위와 같이 정의되지 않는 #!(Shebang) 구문(문법)이면 리터럴로 출력되어야 하겠으나 if는 그렇지 않다.[* 다만 아카라이브 채널위키에는 구현되어 있지 않아서 #!if까지 문구로 나온다.] #! 뒤에 if true로 적어보자면 {{{#!if true
21출력된다.}}} true와 반대되는 false를 #!if 다음에 적어놓고 테스트해보면 {{{#!if false
22테스트 결과}}} 출력되지 않음을 볼 수 있다.
r63
23
r290
24{{{#orange 결론}}} : if는 지원되는 구문이며 true는 논리값 true로 동작된다.
r89
25
r279
26== 부등호, 숫자 연산 기호 ==
27{{{#!if 1<2
28부등호 계산으로 조건식을 만들 때, }}}{{{#!if 2>=-3
29음수값도 읽을 수 있다.}}}
30
31||<table bgcolor=transparent,transparent> 축약 || 뜻 || 주의사항 ||
32||<-1> ||<-1> greater ||<-1>{{{#!if 10>9
33{{{#orange \>}}}만 된다}}}. {{{#orange \>\>}}}는 안 된다.[* 후술할 비트 연산자 중 하나이다.] {{{#!if 10>>9
34\>\>}}} ||
35||<-1><|2> geq ||<-1><|2>'''g'''reater than or '''eq'''ual to ||<-1>{{{#!if 2>=-3
36{{{#orange >=}}}로 입력 안 하고 {{{#orange =>}}}로 입력하면 깨진다.}}}{{{#!if 2=>-3
37테스트}}} ||
38||||||<-1>{{{#!if (1>=1)
391{{{#orange >=}}}1 을 조건으로 걸면 true가 된다.}}} ||
40||<-1><|2> leq ||<-1><|2>'''l'''ess than or '''eq'''ual to ||<-1>{{{#!if -100<=99
41{{{#orange \<=}}}로 입력 안 하고 {{{#orange =<}}}로 입력하면 깨진다.}}}{{{#!if -100=<99
42테스트}}}[br]{{{#!if -100<=99
43한 때 (<=) 로 해도 나오지 않다가 ---잠수함 패치로--- fix된 모양이다.}}} ||
44||||||<-1>{{{#!if (1<=1)
451{{{#orange <=}}}1 을 조건으로 걸면 true로 나온다}}} ||
46
47 * {{{#!if 2*3==6
48\* 기호는 "곱(times) 기호이다.}}} 식을 틀리게 만들면 출력되지 않는다. (따라서 *는 지원되는 모양이다.){{{#!if 2*3==5
49테스트}}}
50 * {{{#!if 10/5==2
51\/ 기호는 "나누기(devided by)" 기호이다.}}} / 식을 틀리게 만들면 나오지 않는다. (따라서 /는 지원되는 모양이다.){{{#!if 10/5==1
52테스트}}}
53
54{{{#orange 결론}}} : * / > >= < <= 연산기호는 지원된다.
55
56== 논리식, 비트식 ==
57=== |, & 기호 ===
58==== 논리 연산 ====
r139
59두 식을 두고 | 기호 테스트를 해보았을 때, {{{#!if (1==1)|(0==0)
r137
60두 식이 모두 참일 때는 당연히 출력되며 }}}{{{#!if (1==1)|(1==0)
61마주 보는 두 식중 오른쪽이 거짓이 되었든 }}}{{{#!if (1==2)|(2==2)
62왼쪽이 거짓이 되었든 하나가 거짓이라 하더라도 나머지 하나가 참이라면 출력이 된다.}}} 양쪽의 식 모두가 거짓(false)이라면 출력되지 않는다. {{{#!if (1==2)|(1==0)
r24
63출력 (| 기호)}}}
r42
64
r137
65앞의 true와 false가 진짜 true, false로 동작되는지 확인해보는 겸 테스트를 해보자면 {{{#!if true | true
66true | true 로 적었을 때 출력이 된다. }}}{{{#!if true | false
r172
67true | false 로 조건을 적든}}} {{{#!if false | true
r139
68false | true로 조건을 적든 출력이 되므로 true와 false는 true와 false가 맞다.}}} false | false 로 if를 걸었을 때 출력할 문구가 나오지 않는 상황을 보면 true가 true이고 false는 false임이 확실하다. {{{#!if false | false
r42
69출력 (| 기호)}}}
70
r137
71그러므로 | 기호는 논리연산 OR에 해당된다.
72
73만약 | 기호를 하나만 적지 않고 2개를 적어보면 어떻게 될까? {{{#!if true || true
74마찬가지로 동작된다.}}} 그러나 |기호를 3개를 적어 식으로 걸어보면 동작되지 않는다.{{{#!if true ||| true
75출력 (| 기호)}}}
r167
76
77앞의 true와 false를 다시 가져와서 & 기호 테스트를 할 수 있다. {{{#!if true & true
78양쪽 모두 true일 경우 (true & true) 출력할 문구가 나온다. }}}{{{#!if true & false
79출력1 (& 기호)}}}{{{#!if false & true
80출력2 (& 기호)}}}{{{#!if false & false
81출력3 (& 기호)}}} 어느 한 쪽이 false가 되면 출력되지 않고, 양쪽 모두 false가 된다면 출력되지 않는다.
82
r279
83==== 비트 연산 ====
r167
84| 기호, & 기호가 2진수 비트합으로도 처리되는 상황을 설명하자면 true와 false 진리값이 각각 1, 0인 논리를 시스템상을 먼저 볼 필요가 있다.
r171
85{{{#!wiki style="word-break: keep-all;"
r168
86||<table bgcolor=transparent,transparent>{{{#!wiki style="display: inline-block;"
r139
87||<table bgcolor=transparent,transparent> || case1 || case2 || case3 || case4 ||
r167
88|| A || {{{#dodgerblue true}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} || {{{#tomato false}}} ||
89|| B || {{{#dodgerblue true}}} || {{{#tomato false}}} ||{{{#dodgerblue true}}} || {{{#tomato false}}} ||
r168
90|| A{{{#orange \∨}}}B || {{{#dodgerblue true}}} || {{{#dodgerblue true}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} ||}}}||{{{#!wiki style="display: inline-block;"
r167
91||<table bgcolor=transparent,transparent> || case1 || case2 || case3 || case4 ||
92|| A || {{{#dodgerblue true}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} || {{{#tomato false}}} ||
93|| B || {{{#dodgerblue true}}} || {{{#tomato false}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} ||
94|| A{{{#orange ∧}}}B || {{{#dodgerblue true}}} || {{{#tomato false}}} || {{{#tomato false}}} || {{{#tomato false}}} ||}}}||
r171
95|| OR 연산 처리 || AND 연산 처리 ||}}}
r167
96OR(∨), AND(∧)는 위 표와 같이 처리된다. 2진법 수의 각 자리수에 따라 {{{#dodgerblue true}}}를 1, {{{#tomato false}}}를 0으로 놓고 | 연산은 OR(∨)처럼, &연산은 AND(∧)처럼 동작된다.
r33
97
r168
98이를테면 5 | 3을 보자면 이진법으로 변환한 값의 각 자릿수에 따라 연산이 되어 7이 나오므로 {{{#!wiki style="display: inline; font-family: monospace;"
99(5|3)==7}}}만을 if 조건문으로 걸게 되면 동작된다. 다른 예로 {{{#!wiki style="display: inline; font-family: monospace;"
100(9|5)==13}}}을 걸게 되면 역시 동작된다.
r139
101{{{#!if (5|3) ==7
r168
102{{{#!wiki style="display: inline-block; margin: 0 5px;"
r139
103||<table bgcolor=transparent,transparent> 10진수 || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
r33
104|| 5 = || 1 || 0 || 1 ||
105|| 3 = || 0 || 1 || 1 ||
r168
106|| (5|3) = 7 || 1 || 1 || 1 ||}}}}}}{{{#!if (9|5) ==13
107{{{#!wiki style="display: inline-block; margin: 0 5px;"
r154
108||<table bgcolor=transparent,transparent> 10진수 || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
r42
109|| 9 = || 1 || 0 || 0 || 1 ||
110|| 5 = || 0 || 1 || 0 || 1 ||
111|| (9|5) = 13 || 1 || 1 || 0 || 1 ||
r168
112}}}}}}
113만약 (5|3)==6이나 (9|5)==12를 테스트하게 되면 두 식 모두 일(2^^0^^)의 자릿수가 틀려 출력할 문구가 나오지 않는다.{{{#!if (5|3) ==6
114출력}}}{{{#!if (9|5) ==12
r33
115출력 (1101)}}}
r139
116
r168
117& 기호를 이용한 연산의 예로 {{{#!wiki style="display: inline; font-family: monospace;"
118(25&19)==17}}}이나 {{{#!wiki style="display: inline; font-family: monospace;"
119(20&11)==0}}}을 조건문에 넣어보면 출력할 문구가 나온다. (25&19)==19를 보면 2^^^1^^^의 자릿수가 틀려서 출력되지 않는다.{{{#!if (25&19)==19
120출력}}}
121{{{#!if (25&19)==17
122{{{#!wiki style="display: inline-block; margin: 0 5px;"
r154
123||<table bgcolor=transparent,transparent> 10진수 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
r42
124|| 25 || 1 || 1 || 0 || 0 || 1 ||
125|| 19 || 1 || 0 || 0 || 1 || 1 ||
r168
126|| (25&19) = 17 || 1 || 0 || 0 || 0 || 1 ||}}}}}}{{{#!if (20&11)==0
127{{{#!wiki style="display: inline-block; margin: 0 5px;"
r154
128||<table bgcolor=transparent,transparent> 10진수 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
r43
129|| 20 || 1 || 0 || 1 || 0 || 0 ||
130|| 11 || 0 || 1 || 0 || 1 || 1 ||
r168
131|| (20&11) = 0 || 0 || 0 || 0 || 0 || 0 ||}}}}}}
r154
132
r279
133* {{{#!if ((4==4)&(-2>-3))|((1>0)&(2<4))
r154
134부등호 식으로도 true와 false를 만들 수 있다.}}}
r279
135=== ^ 기호 ===
136==== 논리 연산 ====
r167
137계산기로 {{{#!wiki style="display: inline; font-family: monospace;"
r290
138\^}}} 기호를 입력하면 exponent?가 되므로 10^4==1000이 {{{#!if 10^4==10000
139겉보기에는 돌아갈 것 같이 생겼다. 그런데 {{{#!if 10^4==9999
140틀리게 해도 나오는 것으로 봐서는 지원되지 않는 모양이다?[* 지수가 아니라 프로그래밍 전용 연산]
r24
141출력 (^기호)}}}
r290
142
143true와 false로 ^기호를 연산해보면 다음과 같이 된다.
144||<table bgcolor=transparent,transparent> || case1 || case2 || case3 || case4 ||
145|| A || {{{#dodgerblue true}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} || {{{#tomato false}}} ||
146|| B || {{{#dodgerblue true}}} || {{{#tomato false}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} ||
147|| A{{{#orange ^}}}B || {{{#tomato false}}} || {{{#dodgerblue true}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} ||
r24
148{{{#!if true ^ false
r290
149true ^ false}}} 또는 {{{#!if false ^ true
150false ^ true}}}일 경우에 true가 되며 false ^ false, true ^true는 false가 되므로 false ^ false와 true ^ true를 if 다음에 적고 테스트해보면 출력되지 않는다.
r24
151{{{#!if false ^ false
r290
152테스트}}}{{{#!if true ^ true
153테스트}}}
r24
154----
r173
155A^B==C {{{-2 ([math(A \neq 0,\ B \neq C)])}}}꼴을 if 조건문으로 걸어 놨는데 true가 된 것은, ==를 먼저 연산해서 A^false가 되었는데 A가 0이 아니므로 true로 읽히게 되어 A^false가 true로 반환돼서 if 조건문이 true로 되어버린 모양.
r59
1561^2==3 : 1^false가 되어 출력된다.
157{{{#!if 1^2==3
158출력}}}
159----
1601^1==1 : 1^true가 되어 출력되지 않는다.
161{{{#!if 1^1==1
162출력}}}
163----
1640^1==2 : 0^false가 되어 출력되지 않는다.
r58
165{{{#!if 0^1==2
166출력}}}
r59
167----
1680^1==1 : 0^true가 되어 출력된다.
169{{{#!if 0^1==1
170출력}}}
171----
r82
172{{{#orange 결론}}}
173 : ^는 논리연산 XOR
r63
174
r215
175그런데 희한한 것이, {{{#!if true&&true
176&&는 되고 }}}{{{#!if true||false
177||는 되는데 }}}{{{#!if true^^false
r279
178???}}}^^는 안 나온다. ^를 2개 이어 적으면 어느 문법과 중첩이 되는 것인가?(RAW 참고)
179
180==== 비트 연산 ====
r60
181| 기호, & 기호와 같이 2진법의 각 자릿수별로 계산된다.
182
183|| 10진법 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
184|| 20 || 1 || 0 || 1 || 0 || 0 ||
185|| 11 || 0 || 1 || 0 || 1 || 1 ||
186|| (20^11)=31 || 1 || 1 || 1 || 1 || 1 ||
187(20^11)=31 : 출력된다.
188{{{#!if (20^11)==31
189출력 (20^11)=31}}}
190----
191(20^11)=30 : 2^^^0^^^의 자릿수가 틀려서 출력되지 않는다.
192{{{#!if (20^11)==30
193출력}}}
r66
194-----
195양변에 ^을 걸어도 출력된다.
196|| 10진법 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
197|| 17 || 1 || 0 || 0 || 0 || 1 ||
198|| 14 || 0 || 1 || 1 || 1 || 0 ||
199|| (17^14)=31 || 1 || 1 || 1 || 1 || 1 ||
200(20^11)==(17^14) : 출력된다.
201{{{#!if (20^11)==(17^14)
202출력 }}}
203----
204(20^10)==(17^14) : 2^^^0^^^의 자릿수가 틀려서 출력되지 않는다.
205{{{#!if (20^10)==(17^14)
206출력 }}}
r279
207=== ture, false, !기호 테스트 ===
r41
208false == false : 출력된다.
r27
209{{{#!if false==false
210출력 (f=f)}}}
211----
r83
212true == true : 출력된다.
213{{{#!if true==true
214출력 (t=t)}}}
215----
r41
216false == true : 출력되지 않는다.
r27
217{{{#!if false==true
218출력 (f=f)}}}
219----
r41
220false != true : 출력된다.
r27
221{{{#!if false != true
222출력 (!= 기호)}}}
223----
r41
2241!=0 : 출력된다.
r27
225{{{#!if 1!=0
226출력 (1!=0)}}}
227----
r41
2281 !=0 : 출력된다.
r28
229{{{#!if 1 !=0
230출력 (1 !=0)}}}
231----
r41
2321 !==0 : 출력되지 않는다.
r28
233{{{#!if 1 !==0
234출력 (1!==0)}}}
235----
r56
236!(1==0) : 출력된다.
237{{{#!if !(1==0)
238출력 !(1==0)}}}
239----
r41
2401<0 : 출력되지 않는다.
r28
241{{{#!if 1<0
242출력 (1<0)}}}
243----
r41
2441 !< 0 : 출력되지 않는다.
r28
245{{{#!if 1 !< 0
246출력 (1!< 0)}}}
247----
r41
2481 !(<) 0 : 출력되지 않는다. 부등호에 걸 수 있는 기호가 아니라서 깨진 모양이다.
r32
249{{{#!if 1 !(<) 0
250출력 (1!(<) 0)}}}
251----
r41
252!(1<0) : 출력된다.
r28
253{{{#!if !(1<0)
254출력 !(1<0)}}}
255----
r41
256!(true and true) : 출력되지 않는다.
r27
257{{{#!if !(true&true)
258출력 !(t&t)}}}
259----
r41
260!(true and false) : 출력된다.
r27
261{{{#!if !(true&false)
262출력 !(t&f)}}}
263----
r41
264!(false and false) : 출력된다.
r27
265{{{#!if !(false&false)
266출력 !(f&f)}}}
r41
267그냥 and 식 전체에 ! 씌우면 nand가 된다.
r28
268----
r29
269!(true ^ true)
270{{{#!if !(true^true)
271출력 !(t^t)}}}
272----
273!(true ^ false)
274{{{#!if !(true^false)
275출력 !(t^f)}}}
276----
277!(false ^ true)
278{{{#!if !(false^true)
279출력 !(f^t)}}}
280----
r28
281!(false ^ false)
282{{{#!if !(false^false)
283출력 !(f^f)}}}
r31
284그냥 ^ 식 전체에 ! 씌우면 xand(nxor)이다.
285----
r41
286!(!true) : 출력된다 (not of not)
r31
287{{{#!if !(!true)
288출력 !(!t)}}}
289----
r41
290!!true : 출력되지 않는다. !는 범위를 입력해줘야 동작되는 모양.
r31
291{{{#!if !!true)
292출력 (!!t)}}}
293----
r41
294not of not of not of true : 출력되지 않는다.
r31
295{{{#!if !(!(!true))
296출력 !(!(!t))}}}
297----
r41
298not of not of not of not of true ---사각형안의사각형안의--- : 출력된다.
r31
299{{{#!if !(!(!(!true)))
300출력 !(!(!(!t)))}}}
301----
r56
3020 : 진리값 0 (false)으로 읽히는지 출력되지 않는다.
303{{{#!if (0)
304출력}}}
305----
306!(0) : 출력된다.
307{{{#!if !(0)
308출력}}}
309----
3101 : 진리값 1 (true)으로 읽히는지 출력된다.
311{{{#!if (1)
312출력}}}
313----
314!(1) : 출력되지 않는다.
315{{{#!if !(1)
316출력}}}
317----
3182 : 출력된다.
319{{{#!if (2)
320출력}}}
321----
322!(2) : 출력되지 않는다.
323{{{#!if !(2)
324출력}}}
325----
3260.5 : 출력된다.
327{{{#!if (0.5)
328출력}}}
329----
330!(0.5) : 출력되지 않는다.
331{{{#!if !(0.5)
332출력}}}
333----
r82
334{{{#orange 결론}}} : !는 논리연산 NOT이고, 범위를 지정해줘야 동작된다.
r56
335---0만 아니면 될까?---
r36
336
r279
337=== ~ 기호 ===
r41
338~false : 출력된다.
r36
339{{{#!if ~false
r38
340출력 ~f}}}
r37
341----
r41
342~(~true) : 출력된다.
r37
343{{{#!if ~(~true)
344출력 ~(~t)}}}
345----
r41
346~(!(~(!true))) : 출력된다.
r37
347{{{#!if ~(!(~(!true)))
348출력 ~(!(~(!t)))}}}
349----
r41
350~true : 출력된다.
r37
351{{{#!if ~true
352출력 ~t}}}
353----
r41
354~(true) : 출력된다.
r37
355{{{#!if ~(true)
356출력 ~(t)}}}
357----
r41
358(~true) : 출력된다.
r38
359{{{#!if (~true)
360출력 (~t)}}}
361----
r41
362~~true : 출력된다.
r37
363{{{#!if ~~true
364출력 ~~t}}}
365----
r41
366~(-1)=0 : 출력된다.
r38
367{{{#!if ~(-1)==0
368출력}}}
369----
r41
370~(-1)=1 : 출력되지 않는다.
r38
371{{{#!if ~(-1)==1
372출력}}}
373----
r41
374~(-2)=1 : 출력된다.
r39
375{{{#!if ~(-2)==1
376출력}}}
377----
r53
378~(~1)=1 : 출력된다.
379{{{#!if ~(~1)==1
380출력}}}
381----
r41
382~false=false : 출력되지 않는다.
r38
383{{{#!if ~false==false
384출력}}}
385----
r41
386~false=true : 출력되지 않는다.
r38
387{{{#!if ~false==true
388출력}}}
389----
r41
390~(!(true))=false : 출력되지 않는다.
r38
391{{{#!if ~(!true)==false
392출력}}}
393----
r84
394{{{#orange 결론}}} : ~ 기호는 논리 연산으로는 동작되지 않는다.
r40
395
396다만 위의 ~(-1)==1 을 가져와서 비트 연산이 참인지 거짓인지 나오는 결과를 두고 논리식을 만들기는 가능하다.
r41
397!(~(-1)==1) : false 부정이므로 출력된다.
r40
398{{{#!if !(~(-1)==1)
399출력}}}
r42
400----
401---만약에 if ~A|B을 해본다면?---
402
r48
403== % 기호 테스트 ==
404%는 윈도우즈 계산기 공학용에서 "%키"로도 쓰인다.
r52
405[math(5^2 \equiv 4\ (\bmod 7))] : ---그냥 왼쪽 식은 복잡한 식이고[* {{{#!wiki
406사실 [math(\equiv 11 \equiv 18 \equiv 25 \equiv 32 \equiv \cdots\ (\bmod 7))] 이지만 이 식에서는 오른쪽 수는 0 이상의 정수 가운데서 식을 만족하는 가장 작은 값을 생각한다.[br]물론 다음도 출력된다.
407if 18%7=32%7
408{{{#!if 18%7==32%7
409출력 (18%7=32%7)}}}
410
411여기서 %를 적어놓지 않으면 출력되지 않는다.
412예 : 5**2=11 로만 적어놓으면 출력되지 않는다.
413{{{#!if 5**2%7==11
414출력 (5**2%7=11)}}}}}}] --- 5^^^2^^^=25를 7로 나눈 나머지는 4이다.
r48
415{{{#!if 5**2%7==4
r52
416출력 (5^^^2^^^%7=4)
417----}}}
r48
418----
419식을 틀리게 적으면 출력되지 않는다.
420{{{#!if 5**2%7==3
421출력}}}
r50
422----
r63
423
r82
424== null 과 "" 테스트 ==
425""과 ""은 같다.
426{{{#!if "" == ""
427출력}}}
428----
429Null과 ""은 다르다.
430{{{#!if null == ""
431출력}}}
432----
r87
433좌 우를 바꿔 적어도 다르다.
434{{{#!if "" == null
435출력}}}
436----
r82
437null과 null은 같다.
438{{{#!if null==null
439출력}}}
440----
r86
441if null 은 출력되지 않는다.
442{{{#!if null
443출력}}}
444----
445그럼 앞에서 if false도 출력되지 않았으니까 null==false일까?
r82
446null=false 테스트 하면 출력되지 않는다.
447{{{#!if null==false
448출력}}}
r86
449
450null과 false는 같지 않다. (나무위키 도움말에서) if null이면 거짓이므로 출력이 안 되는 것이 아니라, if 조건부 null이 true 논리값으로 나오지 않아서 출력이 안 되는 것이다. ---틀린 말은 아닌데, 팩트가 하나도 없으면 참은 아니기 때문이다.---
r82
451----
452null과 true는 다르다. null=true 테스트를 하면 출력되지 않는다.
453{{{#!if null==true
454출력}}}
r87
455----
456그리고 if ""를 해도 출력되지 않는다.
457{{{#!if ""
458출력}}}
459----
r82
460{{{#orange 결론 1}}} : 호출할 때 {{{#!wiki style="display: inline; font-family: monospace;"
461{{{#skyblue 변수명}}}=}}}이라고 적으면 {{{#skyblue 변수명}}}은 "정의한 값이 없음(null)"이 아니라 "빈 텍스트 값"이 된다.
462{{{#orange 결론 2}}} : true, false는 "정의한 논리값"이므로 null과 다르다.
463
r105
464{{{#orange 기타}}} : if 구문에 숨은 함수나 연산자가 있는지 찾아보고 싶다면 {{{#dodgerblue 아무 텍스트}}}[* 단, 기호가 들어가지 않을 것]를 가지고 와서 null과 같은지 대조해보면 된다.
r104
465>\{\{\{\#\!if {{{#dodgerblue ''(입력한 텍스트)''}}}==null
466>피노키오의 코는 길어지지 않았다.\}\}\}
467{{{#dodgerblue 입력한 텍스트}}}가 단순 변수명이면 식이 "변수명=null"이 되어 true가 되어 출력할 내용이 나올 것이고, {{{#dodgerblue 입력한 텍스트}}}가 연산자이면 출력되지 않을 것이다.
r84
468== 수 체계 확장 테스트 ==
r163
469{{{+1
r251
470 * 소수의 비밀}}}계산에서 [math(1.1+0.1=1.2)]는 맞는데, 정작 if문 걸어보면 틀린다. 이유는 아래 영상을 참고.
r162
471[youtube(-GsrYvZoAdA)]
472{{{#!if 1.1+0.1==1.2
473테스트}}}
r166
474요약해보자면, 소수값은 2진법 버림값으로 저장되므로 미묘한 오차가 발생한다고 한다.
r165
475{{{#!if 1.1+0.1>1.2
r251
476실제 테스트 해보면 1.1+0.1은 1.1으로 저장되는 값과 0.1으로 저장되는 값을 더하는데, 1.2으로 저장되는 값보다 '''크게''' 나오므로 1.1+0.1>1.2가 된다.}}}
r163
477
r272
478제곱근을 구하고자 a**0.5 같은 식을 만들어도 되기는 하지만, 마찬가지로 저장되는 값을 참고하는 모양으로 보인다.
r54
479----
r45
480지수의 지수
r63
481{{{+2 2^^^{{{#!wiki style="display: inline"
r44
4822^^^2^^^}}}^^^=16}}} : 출력된다.
483{{{#!if 2.0**(2.0**2.0)==0**1+16
484출력}}}
485----
r63
486{{{+1 2^^^{{{#!wiki style="display: inline"
r44
4872^^^2^^^}}}^^^=15}}}로 하면 출력되지 않는다.
488{{{#!if 2.0**(2.0**2.0)==0**1+15
489출력}}}
490----
r63
491{{{+2 3^^^{{{#!wiki style="display: inline"
r46
4923^^^2^^^}}}^^^=3^^^9^^^=19683}}} : 출력된다.
493{{{#!if 3.0**(3.0**2.0)==0**1+19683
r44
494출력}}}
495----
r63
496{{{+2 3^^^{{{#!wiki style="display: inline"
r46
4973^^^2^^^}}}^^^=3^^^9^^^=19682}}} : 출력되지 않는다.
498{{{#!if 3.0**(3.0**2.0)==0**1+19682
r44
499출력}}}
500----
r45
501지수의 지수의 지수
r63
502{{{+2 2^^^{{{#!wiki style="display: inline"
5032^^^{{{#!wiki style="display: inline"
r45
5042^^^2^^^}}}^^^}}}^^^=2^^^16^^^=65536}}} : 출력된다.
505{{{#!if 2.0**(2.0**(2.0**2.0))==0**1+65536
506출력}}}
507----
r63
508{{{+2 2^^^{{{#!wiki style="display: inline"
5092^^^{{{#!wiki style="display: inline"
r45
5102^^^2^^^}}}^^^}}}^^^=2^^^16^^^=65535}}} : 출력되지 않는다.
511{{{#!if 2.0**(2.0**(2.0**2.0))==0**1+65535
512출력}}}
513----
r63
514무한 지수 탑 함수 테스트를 해볼 겸 지수의 지수의 지수의 지수(...)를 테스트 해볼 수는 있겠지만 적당한 값을 넣어야 한다. 가령 {{{+2 2^^^{{{#!wiki style="display: inline"
5152^^^{{{#!wiki style="display: inline"
5162^^^{{{#!wiki style="display: inline"
r49
5172^^^2^^^}}}^^^}}}^^^}}}^^^}}}를 계산기에서 계산하면 {{{오버플로}}}가 나온다.
518----
r44
519[math(\left(1^{{1}\over{2}}\right)^{2}=1)]
520{{{#!if (1.0**0.5)**2.0==0**1+1
521출력}}}
522----
r45
523[math(\left((-1)^{{1}\over{2}}\right)^{2}=-1)] : [[허수]]는 불가능한 모양이다.
524{{{#!if ((-1.0)**0.5)**2.0==0.0**1.0-1.0
r44
525출력}}}
526
r84
527{{{#orange 결론}}} : (%로 잘만 달랜다면) 실수 범위의 계산까지 다룰 수 있다.
528
r189
529물론 [math(e^{i \pi}=-1)][* 오일러 등식] 같이 복잡한 계산을 생각해볼 수는 있겠지만, [math(\sin)], [math(\cos)] 등이 지원된다 하더라도 [[틀:구 계산기2]][* 계산값 자체를 출력하는 방법이 아직까지는 발견되지 않은 상황에서, 두 수의 사칙연산을 계산하여 나오는 값을 자리 단위로 끊어 출력해주는 틀이다. 2025년 8월 경 방법이 생겨 현재는 더 [[틀:계산기|간단해진 버전]]이 존재한다.]처럼 계산값을 출력하거나 판독해줘야 의미가 있으므로 그렇게까지 코딩 공사를 하자면 규모가 클 것으로 보인다.
r84
530
531== 비트 연산 테스트 ==
r67
532Zeroization. 자기 자릿수 이상으로 밀어버리면 0이 된다.
5331>>1=0 : 출력된다.
534{{{#!if 1>>1==0
535출력}}}
536----
r69
53742<2^^^6^^^=64이므로 2진법으로 6자리 숫자임을 이용.
r67
53842>>5==1 : 출력된다.
r68
539{{{#!if 42>>5==1
r67
540출력}}}
541----
54242>>5==0 : 42의 2^^^5^^^ 자릿수가 1이었으므로 출력되지 않는다.
r68
543{{{#!if 42>>5==0
r67
544출력}}}
545----
54642>>6==1 : 출력되지 않는다.
547{{{#!if 42>>6==1
548출력}}}
549----
55042>>6==0 : 출력된다.
551{{{#!if 42>>6==0
552출력}}}
553----
55442>>7==0 : 출력된다.
555{{{#!if 42>>7==0
556출력}}}
557----
r69
55842={{{#blue 101}}}010,,,(2),,,
55995={{{#blue 101}}}1111,,,(2),,,
56042>>3==5, 95>>4==5이므로 42>>3==95>>4는 출력된다.
561{{{#!if 42>>3==95>>4
562출력}}}
r78
563
r298
564== @,,,,,,매개변수@와 if ==
565=== @,,,,,,매개변수@, this 테스트 ===
r247
566[include(틀:상세 내용, 설명대상=매개변수 대상, 문서명=테스트:if문법/include 대상)]
567[include(틀:상세 내용, 설명대상=매개변수 대상의 include 테스트 결과, 문서명=테스트:if문법/include 결과)]
r298
568
r158
569---??? : This is blasphemy! This is madness!---
570{{{#!folding - ??? : Madness? [펼치기·접기]
571[youtube(4Prc1UfuokY, start=104)]
572THIS IS SPARTA!!!}}}
573
r254
574if 문법이 도입되기 이전에도
r252
575>{{{#!wiki style="display: inline; font-family: monospace;"
r253
576{{{#orange \{{{}}}#!wiki style={{{#orange "}}}{{{#teal @@_@매개변수명@}}}{{{#orange "}}}
r252
577{{{#orange \}\}\}}}}}}}
r254
578같은 원문이 든 문서를 include하고 매개변수명에 CSS 속성에 해당하는 텍스트 값을 넣어 출력을 할 수 있었다. 이는 아카라이브 채널위키에서 [[https://arca.live/w/namuwikistyle/연습장3|이런 문서]]를 예시로 들 수 있다.
r252
579
r158
580{{{#orange 결론 1 :}}} {{{#!wiki style="display: inline; font-family: monospace;"
581this\[{{{#orange \'}}}{{{#green 변수명}}}{{{#orange \'}}}\]}}} (작은따옴표), {{{#!wiki style="display: inline; font-family: monospace;"
582this\[{{{#orange \"}}}{{{#green 변수명}}}{{{#orange \"}}}\]}}} (큰따옴표)는 텍스트값으로 출력된다. {{{#!wiki style="display: inline; font-family: monospace;"
583this\[{{{#orange \+}}}{{{#green 변수명}}}\]}}}, {{{#!wiki style="display: inline; font-family: monospace;"
r299
584this\[{{{#green 변수명}}}\]}}}으로 해당 {{{#green 변수명}}} 변수를 불러오는 입력은 올바른 입력이 아니다.
r158
585숫자 값으로 나오게 하고 싶으면 {{{#!wiki style="display: inline; font-family: monospace;"
586{{{#orangered +}}}this\[{{{#orange \'}}}{{{#green 변수명}}}{{{#orange \'}}}\]}}} (작은따옴표), {{{#!wiki style="display: inline; font-family: monospace;"
587{{{#orangered +}}}this\[{{{#orange \"}}}{{{#green 변수명}}}{{{#orange \"}}}\]}}} (큰따옴표) 등 알맞은 양식으로 적어야 한다.
588숫자 값으로 연산할 경우 변수를 괄호로 묶어주어야 조건식에 오류가 나지 않는다.
589예 : {{{#!wiki style="display: inline; font-family: monospace;"
590{{{#purple \(}}}{{{#orangered +}}}this\[{{{#orange \'}}}{{{#green aaa}}}{{{#orange \'}}}\]{{{#purple \)}}}+{{{#purple \(}}}{{{#orangered +}}}this\[{{{#orange \'}}}{{{#green bbb}}}{{{#orange \'}}}\]{{{#purple \)}}}}}}
591
592{{{#orange 결론 2 :}}} {{{#!wiki style="display: inline; font-family: monospace;"
593this{{{#orange \.}}}{{{#green 변수명}}}}}}은 양식만 잘 맞추면 텍스트값이나 숫자값으로 출력된다.
r299
594
595{{{#orange 결론 3 :}}} {{{#green 변수명1}}}이 "{{{#green 변수명2}}}" 라는 텍스트 값을 가질 경우 따옴표가 없는 {{{#!wiki style="display: inline; font-family: monospace;"
596this{{{#orange \[}}}{{{#green 변수명1}}}{{{#orange \]}}}}}}은 {{{#!wiki style="display: inline; font-family: monospace;"
597this{{{#orange \.}}}{{{#green 변수명2}}}}}}와 같다.
r298
598=== wiki, style 문법 ===
599{{{#!wiki style="border-left: 4px #4188f1 solid; padding: 5px 10px;"
600'''{{{#!html if에서 정의한 변수를 <span style="color:orange">wiki</span>의 <span style="color:teal">@@_@매개변수@</span> 문법 또는 <span style="color:orange">style</span>의 <span style="color:teal">@@_@매개변수@</span> 문법으로 잇는 방법}}}에 대한 자세한 내용은 [[테스트:wiki문법]] 문서를 참고하십시오.'''}}}
r158
601
602
r298
603
r107
604== 문자열 검토 연산자 테스트 ==
r109
605Javascript에 지원되는 string(문자열 값) 관련 연산자(함수) 중 indexOf, startsWith, endsWith 등은 분명히 지원되며 동작이 같다. ---JSON으로 돌아가는데 Javascript가 빠질 리가 없다.---
r107
606{{{#!wiki style="display: inline; font-family: monospace;"
607{{{#green 변수명}}}{{{#orange .}}}{{{#purple 연산자}}}}}}이며, 대소문자를 구분하여야 한다.
r111
608관련 문서 : [[https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String|Mozilla MDN Web Docs, JavaScript/Reference/Global_Objects/String]]
r107
609
610 * startsWith : true, false 중 하나로 반환되며 {{{#!if "Hello, World!".startsWith("Hello")
611the seed에 지원되는 연산자이다.}}}
612 * endsWith : true, false 중 하나로 반환되며 {{{#!if "Hello, World!".endsWith("d!")
613the seed에 지원되는 연산자이다.}}}
614 * indexOf : 1부터 -1까지 (unsigned integer이거나 unsigned char이면 끝의 수인가?) 훑어보며 {{{#!if "Hello, World!".indexOf("H")==0
615지원}}}{{{#!if "Hello, World!".indexOf("e")==1
616되는 }}}{{{#!if "Hello, World!".indexOf("l")==2
617연산자}}}{{{#!if "Hello, World!".indexOf("o")==4
618이다. }}}{{{#!if "Hello, World!".indexOf(" ")==6
6190번부터 시작하는 것은 기분 탓이다.}}}
r108
620 * substr{{{#!wiki style="display: inline; display: monospace;"
r109
621({{{#teal 시작하는 문자열 index 번호}}}, {{{#teal 문자열의 길이}}})}}} : {{{#!if "조선의 궁궐에 당도한 것을 환영하오 낯선 이여".substr(8, 6)=="당도한 것을"
r114
622지원된다. ("[[https://namu.wiki/w/세종대왕(문명 5)|조선의 궁궐에 ___당도한 것을___ 환영하오 낯선 이여]]" 문자열의 제8번 index에 주어진 문자열 "당"부터 시작하여 6개만.)
r112
623{{{#!wiki style="word-break: keep-all;
r115
624||<table bgcolor=transparent,transparent><bgcolor=#00d1b2><rowkeepall><nopad> Index ||<nopad> 0 ||<nopad> 1 ||<nopad> 2 ||<nopad> 3 ||<nopad> 4 ||<nopad> 5 ||<nopad> 6 ||<nopad> 7 ||<nopad><bgcolor=gold> 8 ||<nopad><bgcolor=gold> 9 ||<nopad><bgcolor=gold> 10 ||<nopad><bgcolor=gold> 11 ||<nopad><bgcolor=gold> 12 ||<nopad><bgcolor=gold> 13 ||<nopad> 14 ||<nopad> 15 ||<nopad> 16 ||<nopad> 17 ||<nopad> 18 ||<nopad> 19 ||<nopad> 20 ||<nopad> 21 ||<nopad> 22 ||<nopad> 23 ||<nopad> 24 ||
625||<bgcolor=#00d1b2><rowkeepall> 텍스트 || 조 || 선 || 의 || || 궁 || 궐 || 에 || ||<bgcolor=gold> 당 ||<bgcolor=gold> 도 ||<bgcolor=gold> 한 ||<bgcolor=gold> ||<bgcolor=gold> 것 ||<bgcolor=gold> 을 || || 환 || 영 || 하 || 오 || || 낯 || 선 || || 이 || 여 ||}}}}}}
r125
626 * 여기서 문자열의 길이를 0으로 해도 {{{#!if "조선의 궁궐에 당도한 것을 환영하오 낯선 이여".substr(8, 0)==""
627되지만, 빈 문자열 값으로 만들 의미가 있을까?
628{{{#!wiki style="word-break: keep-all;
629||<table bgcolor=transparent,transparent><bgcolor=#00d1b2><rowkeepall><nopad> Index ||<nopad> 0 ||<nopad> 1 ||<nopad> 2 ||<nopad> 3 ||<nopad> 4 ||<nopad> 5 ||<nopad> 6 ||<nopad> 7 ||<nopad> {{{#gold 8}}} ||<nopad> 9 ||<nopad> 10 ||<nopad> 11 ||<nopad> 12 ||<nopad> 13 ||<nopad> 14 ||<nopad> 15 ||<nopad> 16 ||<nopad> 17 ||<nopad> 18 ||<nopad> 19 ||<nopad> 20 ||<nopad> 21 ||<nopad> 22 ||<nopad> 23 ||<nopad> 24 ||
630||<bgcolor=#00d1b2><rowkeepall> 텍스트 || 조 || 선 || 의 || || 궁 || 궐 || 에 || || {{{#gold 당}}} || 도 || 한 || || 것 || 을 || || 환 || 영 || 하 || 오 || || 낯 || 선 || || 이 || 여 ||}}}}}}
r275
631 * 가져오기를 시작할 index 번호를 만약 음수로 적어놓는다면, {{{#!if "조선의 궁궐에 당도한 것을 환영하오 낯선 이여".substr(-8, 6)=="하오 낯선 "
632문자열의 길이를 넘어가지 않는 선에서 {{{#orangered 문자열의 끝에서부터 앞으로 그 만큼 간 자리}}}의 문자부터 가지고 오게 된다. 앞의 substr(8, 6)과 비교하자면 substr({{{#orangered -}}}8, 6)은 다른 값이 나올 수 있다.
633{{{#!wiki style="word-break: keep-all;
634||<table bgcolor=transparent,transparent><bgcolor=#00d1b2><rowkeepall><nopad> Index ||<nopad> 0 ||<nopad> 1 ||<nopad> 2 ||<nopad> 3 ||<nopad> 4 ||<nopad> 5 ||<nopad> 6 ||<nopad> 7 ||<nopad> 8 ||<nopad> 9 ||<nopad> 10 ||<nopad> 11 ||<nopad> 12 ||<nopad> 13 ||<nopad> 14 ||<nopad> 15 ||<nopad> 16 ||<nopad><bgcolor=gold> 17 ||<nopad><bgcolor=gold> 18 ||<nopad><bgcolor=gold> 19 ||<nopad><bgcolor=gold> 20 ||<nopad><bgcolor=gold> 21 ||<nopad><bgcolor=gold> 22 ||<nopad> 23 ||<nopad> 24 ||
635||<bgcolor=#00d1b2><rowkeepall> reversed || {{{#orangered -}}}25 || {{{#orangered -}}}24 || {{{#orangered -}}}23 || -22 || -21 || -20 || -19 || -18 || -17 || -16 || -15 || -14 || -13 || -12 || -11 || -10 || -9 ||<bgcolor=gold> -8 ||<bgcolor=gold> -7 ||<bgcolor=gold> -6 ||<bgcolor=gold> -5 ||<bgcolor=gold> -4 ||<bgcolor=gold> -3 || -2 || -1 ||
636||<bgcolor=#00d1b2><rowkeepall> 텍스트 || 조 || 선 || 의 || || 궁 || 궐 || 에 || || 당 || 도 || 한 || || 것 || 을 || || 환 || 영 ||<bgcolor=gold> 하 ||<bgcolor=gold> 오 ||<bgcolor=gold> ||<bgcolor=gold> 낯 ||<bgcolor=gold> 선 ||<bgcolor=gold> || 이 || 여 ||}}}}}}
r125
637
r109
638 * substring {{{#!wiki style="display: inline; display: monospace;"
639({{{#teal 내보내기 시작하는 문자열 index 번호}}}, {{{#teal 내보내{{{#orangered 지 않}}}기 시작하는 문자열 index 번호}}})}}} : {{{#!if "순순히 금을 넘기면 유혈사태는 일어나지 않을 것입니다".substring(11, 15) == "유혈사태"
r126
640지원된다. ("[[https://namu.wiki/w/패왕 간디|순순히 금을 넘기면 ___유혈사태___는 일어나지 않을 것입니다]]" 11번 ~ 15번)
641{{{#!wiki style="word-break: keep-all;
642||<table bgcolor=transparent,transparent><bgcolor=#00d1b2><rowkeepall><nopad> Index ||<nopad> 0 ||<nopad> 1 ||<nopad> 2 ||<nopad> 3 ||<nopad> 4 ||<nopad> 5 ||<nopad> 6 ||<nopad> 7 ||<nopad> 8 ||<nopad> 9 ||<nopad> 10 ||<nopad><bgcolor=gold> 11 ||<nopad><bgcolor=gold> 12 ||<nopad><bgcolor=gold> 13 ||<nopad><bgcolor=gold> 14 ||<nopad> 15 ||<nopad> 16 ||<nopad> 17 ||<nopad> 18 ||<nopad> 19 ||<nopad> 20 ||<nopad> 21 ||<nopad> 22 ||<nopad> 23 ||<nopad> 24 ||<nopad> 25 ||<nopad> 26 ||<nopad> 27 ||<nopad> 28 ||
643||<bgcolor=#00d1b2><rowkeepall> 텍스트 || 순 || 순 || 히 || || 금 || 을 || || 넘 || 기 || 면 || ||<bgcolor=gold> 유 ||<bgcolor=gold> 혈 ||<bgcolor=gold> 사 ||<bgcolor=gold> 태 || 는 || || 일 || 어 || 나 || 지 || || 않 || 을 || || 것 || 입 || 니 || 다 ||}}}}}}
r127
644
r133
645 * 문자열의 유니코드 hex값 반환 ([[https://feedback.theseed.io/posts/1604/string-prototype-charcodeat-meseodeu-heoyong|참고]]{{{-3 ^^더시드포럼^^}}}[* "H"의 char 값은 72이며 [[https://www.ascii-code.com/|ASCII Code]]에 따른 값이다. unsigned char에 따른 확장은 잘 되지 않는다.]) : {{{#!if teststring="테스트"
r127
646이를테면 }}}{{{#!if teststring[1]==0xC2A4
r130
647"테스트"의 1번 index의 문자열 "스"의 유니코드 hex 값은 C2A4이다.
r169
648유니코드에 따른 문자열 목록은 윈도우즈의 경우 charmap.exe를 참고할 수 있으며[* 몇 글꼴은 일부 유니코드가 나타나지 않으므로 흔하게 쓰는 글꼴로 두고 열람해야 한다. {{{#!wiki style="display: inline; font-family: monospace;"
649함초롱바탕}}} 같이 유니코드 명령어 연산자를 제외하고 0x0000(U+0000)부터 0xffff(U+FFFF)까지 거의 모든 유니코드 문자를 볼 수 있는 글꼴이 존재한다.] 또한 [[https://ko.wikipedia.org/wiki/유니코드|한국어 위키백과, 유니코드]] 문서에 적어놓은 표를 참고할 수 있다.}}}
r133
650
651 {{{#!if "0"[0]==48
652{{{#!wiki style="display: inline; font-family: monospace;"
653{{{#green 변수명}}}{{{#orange [}}}{{{#teal index번호}}}{{{#orange ]}}}}}}식으로 돌아가는 모양이다.}}}
r134
654
655 {{{#!if "10"[0]>48
r135
656char를 작은 범위의 integer로 두고 계산되는지
657{{{#!wiki style="display: inline; font-family: monospace;"
658{{{#green 변수명}}}{{{#orange [}}}{{{#teal index번호}}}{{{#orange ]}}} {{{#orangered >}}} {{{#green 숫자}}}}}}[br]같은 부등식도 잘 돌아간다.}}}
r134
659
r136
660 {{{#!if "스레드"[0]>0xAAAA
r135
661유니코드의 경우도 마찬가지로
662{{{#!wiki style="display: inline; font-family: monospace;"
r248
663{{{#green 변수명}}}{{{#orange \[}}}{{{#teal index번호}}}{{{#orange \]}}} {{{#orangered >}}} {{{#orange 0x}}}{{{#green XXXX(hex값)}}}}}}[br]같은 부등식}}}{{{#!if "銑"[0]>0x9290
r136
664## 銑 : 0x9291
665을 넣어}}}{{{#!if "銑"[0]<=0x9291
666도 잘 돌아}}}{{{#!if "銒"[0]>"銑"[0]
667## 銒 : 0x9292
668간다.}}} {{{#!if "스레드"[0]<0xAAAA
r248
669이런 것 같이 }}}틀린 식을 넣으면 나오지 않는다.
670
671 * {{{#!if "테스트"[3]==null
r249
672{{{#purple "}}}{{{#teal 테스트}}}{{{#purple "}}}{{{#orange \[}}}{{{#teal 3}}}{{{#orange \]}}}{{{#purple ==}}}{{{#blue null}}}이 되는 예시처럼, 문자열에서 index값에 해당하는 자리가 비었을 경우, 해당 자리에 주어진 유니코드값이 없으므로 해당 자리의 값을 가져오면 null이 된다.}}}
r248
673
r274
674== 변수값 정의 및 재정의 테스트 ==
675{{{#!wiki @ms@
676{{{#deepskyblue 변수명}}}{{{#orange =}}}{{{#teal 값}}}}}} 을 이용한 if 문법 테스트.
r174
677=== 텍스트값 재정의 테스트 ===
r129
678{{{#!folding 순서대로 정의되는 현상 [펼치기·접기]
r116
679var1="테스트" {{{#green var1을 정의합니다.}}}
680{{{#!if var1="테스트"
681}}}
682----
683test = (var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트") {{{#green test를 정의합니다.}}}
684{{{#!if test=(var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트")
685}}}
686----
687if test : {{{#tomato 나오지 않습니다.}}}
688{{{#!if test
689테스트}}}
690----
691var=var1 : {{{#skyblue var에 var1을 지정해주었습니다}}}
692{{{#!if var=var1
693}}}
694----
695if test : {{{#tomato 역시 나오지 않습니다.}}}
696{{{#!if test
697테스트}}}
698----
699test = (var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트") {{{#green test를 똑같은 식으로 __다시 정의__합니다. }}}
700{{{#!if test=(var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트")
701}}}
702----
703if test : {{{#gold 이제 나옵니다.}}}
704{{{#!if test
705테스트}}}
706----
707{{{#!if var=="테스트"
708var=="테스트"}}} : 검증
709----
710{{{#!if var1=="테스트"
711var1=="테스트"}}} : 검증
712----
713var1="테"+"스"+"트" :
714{{{#!if (var1.substr(0,1)=="테")&&(var1.substr(1,1)=="스")&&(var1.substr(2,1)=="트")
715테스트}}}
716----
717var="테"+"스"+"트"
718{{{#!if (var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트")
719테스트}}}
720----
721var1="[[https://namu.wiki/w/드라군 놀이|드라군]]" {{{#green var1을 다른 값으로 정의합니다.}}}
722{{{#!if var1="드라군"
723}}}
724----
725if test : {{{#tomato test값은 여전히 true로 나옵니다.}}}
726{{{#!if test
727테스트}}}
728----
729var=var1 : {{{#skyblue var에 var1을 다시해주었습니다}}}
730{{{#!if var=var1
731}}}
732----
r123
733if test : {{{#tomato 그래도 test값은 여전히 true로 나옵니다.}}}
734{{{#!if test
735테스트}}}
736----
r116
737test = (var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트") {{{#green test를 똑같은 식으로 __다시 정의__합니다. }}}
738{{{#!if test=(var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트")
739}}}
740----
741if test : {{{#gold 이제 나오지 않습니다.}}}
742{{{#!if test
743테스트}}}
744----
745test = (var.substr(0,1)=="드")&&(var.substr(1,1)=="라")&&(var.substr(2,1)=="군") {{{#green test를 __다른 식으로 정의__합니다. }}}
746{{{#!if test=(var.substr(0,1)=="드")&&(var.substr(1,1)=="라")&&(var.substr(2,1)=="군")
747}}}
748----
749if test : {{{#gold 출력됩니다.}}}
750{{{#!if test
751테스트}}}
752----
753if true&&false : 분명히 출력이 되지 않습니다.
754{{{#!if true&&false
755테스트}}}
756----
757if test&&true
758{{{#!if test&&true
759테스트}}}
760----
761var1="테스트" {{{#green var1을 원래 값(테스트)으로 정의합니다.}}}
762{{{#!if var1="테스트"
763}}}
764----
765exam=test {{{#green exam에 test를 정의합니다.}}}
766{{{#!if exam=test
767}}}
768----
769if exam : 아까 test는 식으로 저장된 것이 아니라 논리값(true or false)으로 저장되었습니다.
770{{{#!if exam
771테스트}}}
r122
772----
773test = (var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트") {{{#green test를 __원래 식으로 정의__합니다. }}}
774{{{#!if test=(var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트")
775}}}
776----
777if test : var{{{#!if var=="드라군"
r124
778=="드라군"}}} !="테"+"스"+"트"이므로 {{{#gold 출력되지 않습니다.}}}
r122
779{{{#!if test
780테스트}}}
781----
782if exam : exam에 {{{#!if exam==true
783true로 정의된 상태}}}이므로 {{{#!if exam
784출력이 됩니다.}}}
r129
785}}}
r156
786
r124
787---변수 주작은 뭐야---
r157
788
r156
789{{{#!if this.assemble1="인장", this.assemble2="주작은", this.assemble3="뭐야", this['인장주작은뭐야']="너희들은 싹다 개추다", this['Chang-seop']=this[(assemble1+assemble2+assemble3)]
r157
790##변수1+변수2+변수3="텍스트1텍스트2텍스트3"
r156
791}}}{{{#!if this['Chang-seop']=="너희들은 싹다 개추다"
r174
792"인장 주작은 뭐야, 프 라 나"[* raw 참조]
r157
793- "너희들은 싹다 개추다"
r161
794-- \- "[[https://starcraft.fandom.com/wiki/High_templar_(StarCraft)#Quotations|Khassar de templari.]]"--}}}
r160
795{{{#!if this.assemble1="과징금", this.assemble2="크아악", this.assemble3="X이빨", this['combination1']="과징금크아악", this['combination2']="과징금크아악X이빨", this['과징금크아악X이빨']="바로리부트정상화", this['과징금크아악']="(대충 못참겠다는 표정)"
796}}}{{{#!if this['Chang-seop']=this[combination2.substr(0,6)]
r186
797(combination2\==\"__과징금크아악__X이빨"의 일부 문자열에 해당하는 이름과 같은 변수(combination1)의 값을 'Chang-seop' 변수의 값으로 재정의)
r161
798}}}
799{{{#!if this['Chang-seop']=="(대충 못참겠다는 표정)"
r160
800"과징금 크아악 X이빨"}}}
801{{{#!if this[combination1+assemble3]=="바로리부트정상화"
802"바로 리부트 정상화" --[[https://namu.wiki/w/장비를 정지합니다|안 되잖아? 어 저, 정상화가 안 돼.]]--}}}
r124
803
r121
804{{{#orange 결론 : }}} 변수를 새로 정의한다면 "식"이 아니라 그 전에 정의되어 있는 변수값을 식에 대입하고 "계산한 값"을 정의하게 되므로, procedure가 아닌 이상 모종의 함수(function)를 정의해야 할 필요가 있다.
r124
805
806{{{#orange 결론2 : }}} include 문법의 괄호 안에 문서명 다음으로 뒤에 넣는 식은 변수값 정의이다.
r174
807
r235
808=== 반점({{{,}}}) true, false 중첩 테스트 ===
r234
809{{{#!if true, true, true, false, true
810여러 값을 부여하는 목적이 __아니__고 논리식을 열거하면 마지막이 true일 때 출력된다.}}}{{{#!if true, true, true, false
811테스트}}}{{{#!if false, false, false, false, false, 0==1, 1==2, 2==3, true
r265
812앞의 값이 모조리 true라도 마지막이 false이면 출력되지 않으며, 앞의 값이 모두 false이더라도 마지막이 true이면 출력된다. }}}{{{#!if false, a=1, true, b=2, c=3, true, true, false
813테스트}}}{{{#!if (a==1)&&(b==2)&&(c==3)
814논리식을 열거하더라도 도중에 변수에 값을 주는 식을 섞었다면 변수에 값이 주어지며, 그렇게 정의된 변수들은 모두 이용할 수 있다.}}}
r234
815
r235
816당연히 지원되지 않는 변수값으로 정의하면 문법이 깨진다.
817
r174
818=== 숫자값 재정의 테스트 ===
819{{{#!if a=3, b=3.0
820a=3 으로, b=3.0으로 주었을 때 a, b의 값은 같아야 한다. }}}{{{#!if a!=b
r185
821그러나 두 수가 명목상으로는 서로 값이 같지만 a는 integer이고 b는 float 형식으로 다른 형식의 값으로 인식하는지 a!=b로 나온다. }}}{{{#!if a=a+0.0
822a에 0.0을 첨가해서 a를 float으로 만들면 }}}{{{#!if a==b
823비로소 a와 b는 같다고 나온다. --뭐야 이거라고 말할 수는 있다.-- }}}{{{#!if !(a==3)
r176
824a는 3인데 0.0을 먹여서 3.0을 만들었으므로 [[https://namu.wiki/w/홍길동전|3을 3이라 부르지 못해서 서러워할]] 수 있다. }}}{{{#!if a=3
825다시 a를 a=3이라고 integer값으로 재정의해야 }}}{{{#!if a==3
826비로소 a==3을 넣었을 때 true가 된다. 이해가 안 가겠거든 이 문단의 RAW를 보자. }}}{{{#!if b==3.0
r185
827마찬가지로 b는 아직도 float이므로 b==3.0인데 }}}{{{#!if !(b==3)
r178
828b==3으로 넣으면 false가 된다. }}}{{{#!if b=+(b.toString()).substr(0, 1)
829물론 b의 {{{3.0}}}에서 아래쪽(에 해당하는 {{{.0}}})을 잘라서 }}}{{{#!if b==3
r179
830--{{{#lightgray 곶}}}-- integer b==3로 만들 수 있다.}}}
831
832{{{#!if a=1618.03398
833응용만 잘한다면 }}}{{{#!if a=a.toString(), t=a.indexOf(".")
r180
834아무 long 값을 가져와도 }}}{{{#!if a=+(a.substr(0,t))
835소수점 아래를 잘라서 }}}{{{#!if a==1618
r179
836정수로 만들 수 있지 않을까?}}}
r181
837
838{{{#!if "."[0]==46
839그리고, ASCII 코드값을 }}}{{{#!if "."[0]==0x002e
r182
84016진법 주소값으로 바꿀 수는 있다. }}}{{{#!if a="."[0]
841주소값을 값으로 가지는 변수는 }}}{{{#!if a==0x002e
r183
842주소값으로 대응할 수 있는데 }}}{{{#!if a==46
843integer로도 가능하며 }}}{{{#!if a=53580
844유니코드 16진법 값도 }}}{{{#!if "테"[0]==53580
r184
845잘만 맞추면 integer로 대응할 수 있다. 이것으로 보자면 integer를 모종의 주소값으로 취급하는 것으로 보인다.}}}
r187
846
847=== 문단을 초월하는 변수값 정의 ===
848{{{#!if this.과징금크아악=="(대충 못참겠다는 표정)"
849문서 전체 raw를 보았으면 알겠지만, 이 문단 이전에 정의된 변수가 이미 있는 상황에서 다음 문단 안에서 문단 편집을 하게 된다면 문단 편집 안에서 미리 보기를 한 것과 저장하고 나오는 결과가 다를 수 있다. 저장할 경우 앞의 문단에서 이미 정의된 변수값이 있으먼 문단 문법을 넘어 문서 끝까지 영향을 준다.}}}
850
r240
851=== 변수 값 변화 주기 (증가, 감소) ===
r222
852{{{#!if a=2, 3==++a
r227
853판별식에서 +를 입력하다가 잘못하여 +기호를 두 번 써서 {{{#!wiki @ms@
r226
854{{{#orange ++}}}{{{#teal 변수}}}}}}로 되면 변수에 1을 증가한 값으로 인식된다. }}}{{{#!if a=4, 4==a++
r227
855---판별식에서 +를 입력하다가 잘못하여 +기호를 두 번 써서 {{{#!wiki @ms@
r226
856{{{#orange ++}}}{{{#teal 변수}}}}}}로 되면 변수에 1을 증가한 값으로 인식된다.--- }}}{{{#!if 5==a
857판별식 안에서 변수 뒤에 ++를 써서 {{{#!wiki @ms@
858{{{#teal 변수}}}{{{#orange ++}}}}}}로 쓰면 해당 판별식을 정상적으로 거치고 나서 변수의 값이 1 증가한다. (자동적으로 {{{#!wiki @ms@
r227
859{{{#teal 변수}}}+{{{#orange =}}}1}}}이 걸린다.) }}}
860
r228
861{{{#!if b="텍스트", ++b==1
r229
862변수가 텍스트 값이어도 변수에 주어진 기본값이 0이므로 텍스트로 정의된 변수 앞에 ++를 걸면 1로 인식된다. }}}{{{#!if b=false, ++b==1
863논리값도 되는데 false 기본값은 0이므로 false로 정의된 변수 앞에 ++를 걸면 1으로 인식되며 }}}{{{#!if b=true, ++b==2
864true의 기본값은 1이므로 true로 정의된 변수 앞에 ++를 붙이면 2로 인식된다.}}}
r228
865
866당연히 __++변수가 아닌__ ++숫자 식, ++논리값, ++텍스트 등은 안 통한다.
r230
867
r231
868{{{#!if a=1, b=1, b==b++, b==b++, b==b++, b==b++, b==b++, b==b++, b==b++, b==b++, b==b++, true, false, false, false, true
r230
869{{{#!wiki @ms@
r231
870{{{#teal 변수}}}{{{#orange ++}}}}}}는 판별식에서 }}}{{{#!if b==10
r239
871true가 되었든 false가 되었든 한 번 쓸 때마다 1씩 증가한다. }}}{{{#!if ++a==a, ++a==a, ++a==a, ++a==a, ++a==a, ++a==a, ++a==a, ++a==a, ++a==10
872{{{#!wiki @ms@
873{{{#orange ++}}}{{{#teal 변수}}}}}} 도 마찬가지로 if문 조건식에 여러 번 쓰게 되면 쓴 만큼 증가한다.}}}
r236
874
r237
875{{{#!if b--==10, b--==9
r236
876{{{#!wiki @ms@
r237
877{{{#teal 변수}}}{{{#orange --}}}}}} 방식도 }}}{{{#!if b==8
r300
878지원된다. }}}{{{#!if --b==7
879그리고 {{{#!wiki @ms@
880{{{#orange --}}}{{{#teal 변수}}}}}}는 minus이므로 먼저 감소하고 비교가 된다.}}}
r239
881
882{{{#!if a="테스트", a--==0
883텍스트값의 경우 기본값이 0이므로 }}}{{{#!if a==-1
884{{{#!wiki @ms@
885{{{#teal 변수}}}{{{#orange --}}}}}}를 걸면 값이 -1으로 된다.}}}
r241
886
887{{{#!if a=100, b=-100, (-+a==-100)&&(-+b==+100)&&(a-+b==200)
888-+로 하면 {{{#!wiki @ms@
r242
889{{{#orange -}}}{{{#purple +}}}{{{#teal 변수}}}}}} 식(덧셈의 역원)으로 읽히는지 음수가 된다. }}}{{{#!if a=100, b=-100, a+(--b)==100-99
r250
890그냥 {{{#teal 변수1}}}{{{#orange --}}}{{{#teal 변수2}}}로만 적으면 깨지나 {{{#teal 변수1}}}{{{#orange +}}}{{{#purple (}}}{{{#orange --}}}{{{#teal 변수2}}}{{{#purple )}}}로 적으면 if구문이 읽히며 }}}{{{#!if b--==-99
r243
891여러 가지 실험을 }}}{{{#!if b==-100
892해볼 수 있다.}}}
r242
893
r244
894{{{#orange ++}}}{{{#teal 변수}}}={{{#deepskyblue 값}}} 같이{{{#!if ++a=2
895연산}}} 비교가 아닌, 변수값 정의에 증가 또는 감소 구문이 들어가면 if 구문 자체가 깨져 먹히지 않는다.
896
r242
897{{{#orange 결론 : }}}
898 * {{{#orange ++}}}{{{#teal 변수}}} : 선 증가 후 비교
899 * {{{#teal 변수}}}{{{#orange ++}}} : 선 비교 후 증가
r300
900 * {{{#orange --}}}{{{#teal 변수}}} : 선 감소 후 비교 ([[https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Expressions_and_operators|JavaScript의 연산자]]를 참고할 수 있다.)
r242
901 * {{{#teal 변수}}}{{{#orange --}}} : 선 비교 후 감소
902 * {{{#orange -+}}}{{{#teal 변수}}} : 증감이 아니라 덧셈의 역원(을 더하는) 연산으로 읽힌다.
903
r281
904
905=== and(&&) 와 or(||)를 이용한 변수값 정의 ===
906{{{#!if a=3, false&&(a==2), a==3
907변수가 성공적으로 정의된다면 논리값 true가 숨어드는 모양이다. 그래서 변수에 값을 주는 부분에 논리 연산을 결합시킬 수 있고 만일 false가 되면 값이 주어지지 않는다.}}}
908
909{{{#!if (a==3)&&(a+=1), (a==4)&&(a+=1), (a==5)&&(a+=1), a==6
910논리식과 변수 정의식을 섞어 쓰면 {{{#!wiki style="display:inline;
911>{{{#!wiki @ms@
912{{{#blue \{{\{#!if}}} ''논리식(조건부)''
r282
913{{{#green \{{\{#!if}}} ''변수 정의식(실행부)''
914{{{#green \}}\}}}}{{{#blue \}}\}}}}
r286
915}}}}}}같이 if 논리식을 하나 만들고 그 안에 if 변수 정의식을 적는 수고를 줄일 수 있다. 간단히 {{{#!wiki style="display:inline;
r281
916>{{{#!wiki @ms@
917{{{#blue \{{\{#!if}}} ''논리식(조건부)''{{{#orange &&}}}''변수 정의식(실행부)''
r282
918{{{#blue \}}\}}}}}}}}}}처럼 나타낼 수 있게 된다. }}}{{{#!if (a==6)&&(a+=1), (a==7)&&(a+=1), (a==8)&&(a+=1), a==9
919응용한다면 반점{{{#orange {{{,}}}}}}을 적어 {{{#!wiki style="display:inline;
920>{{{#!wiki @ms@
921{{{#blue \{{\{#!if}}} ''논리식1''{{{#orange &&}}}''변수 정의식1'' {{{#orangered ,}}} ''논리식2''{{{#orange &&}}}''변수 정의식2'' {{{#orangered ,}}} ''논리식3''{{{#orange &&}}}''변수 정의식3''{{{#orangered ,}}} ...
r281
922{{{#blue \}}\}}}}}}}}}}처럼 나타낼 수 있게 된다.}}}
r283
923
924{{{#!if false||(a=2), a==2
r284
925''논리식''{{{#orange ||}}}''변수 정의식'' 처럼 만들었다면 신경을 써야 할 수 있다. 왼쪽 논리식이 false여도 정의식은 true처럼 인식되므로 값이 새로 주어질 수 있다. 해당 문단의 원문(RAW)을 참고.}}}
r280
926=== null 병합 연산자 ?? ===
927{{{#!if null??null==null
928{{{#!wiki @ms@
r285
929{{{#orange ??}}}}}} 연산은 왼쪽 값이 null일 경우 오른쪽 값을 선택하고, 왼쪽이 null이 아니면 왼쪽을 그대로 선택하는 조건부 연산이다. }}}{{{#!if 0??null!=null
r280
930테스트}}}{{{#!if (0??null)!=null
931{{{#!wiki @ms@
932{{{#orange ??}}}}}} 연산자가 {{{#!wiki @ms@
933{{{#orange !=}}}}}} 연산자와 충돌된다면 괄호를 잘 묶어주어야 한다. }}}
934
935{{{#!if (0??"테스트")!="테스트"
936이를테면 연산자의 왼쪽을 0으로 적게 되면 null이 아니므로 왼쪽 것이 선택된다. }}}{{{#!if 0||"테스트"=="테스트"
937만일 {{{#!wiki @ms@
r281
938{{{#orange ??}}}}}}연산자가 아니라 {{{#!wiki @ms@
939{{{#orange ||}}}}}}(OR) 연산자이면 0이 false이므로 오른쪽이 선택된다. }}}{{{#!if a=3, a=(0||"테스트"), a=="테스트"
r280
940아주 가끔 {{{#!wiki @ms@
941{{{#orange ||}}}}}}연산자를 섞으면서 }}}{{{#!if a=null, b=2, a??b==2
942두 가지 이상의 변수를 다룰 때 쓸만하다.}}}
r116
943== 다른 링크, 틀 출력 테스트 ==
r84
944||If true [[틀:토론]] include[br]{{{#!if true
945[include(틀:토론)]}}}||
946||If false [[틀:폐쇄]] include[br]
947{{{#!if false
948[include(틀:폐쇄)]}}}||
949출력이 되지 않는 틀은 역링크를 조회해보면 include로 역링크가 걸리지 않는다.
950----
951||If true [[:분류:나무마크 문법|분류:나무마크 문법]][br]{{{#!if true
952[[분류:나무마크 문법]]}}}||
953||If false [[:분류:위키]][br]{{{#!if false
954[[분류:위키]]}}}||
955출력이 되지 않는 분류로는 해당 문서가 포함되지 않는다.
956----
957||If true \#\#\@[br]{{{#!if true
r141
958##@if true (if true 사이에 고정 주석 출력 테스트)
r84
959}}}||
960||If false \#\#\@[br]{{{#!if false
r141
961##@if false (if false 사이에 고정 주석 출력 테스트)
r84
962}}}||
963\#\#\@ 테스트. If 문구 사이에 \#\#\@를 끼워넣어도 편집창 상단 표시에 출력되어 나온다.
964
965||{{{#!wiki style="display:inline;"
966\#\#\@If true
967##@{{{#!if true
r141
968##@if true (고정주석 출력 공간에 if true로 고정 주석 출력 테스트)
r84
969##@}}}
970}}}||
971||{{{#!wiki style="display:inline;"
972\#\#\@If false
973##@{{{#!if false
r141
974##@if false (고정주석 출력 공간에 if false로 고정 주석 출력 테스트)
r84
975##@}}}
976}}}||
977단, \#\#\@ 로 표시되는 공간에 If 구문이 걸리면 true일 때만 출력된다.
978----
979{{{#!if false
980이 내용은 false라서 나오지 않습니다.
981예시 :
982토론 합의 내용
983 * 문서명(표제어)을 A로 정한다. (/threadslug1 토론 합의)
984 * 문서의 B 서술을 존치한다. (/threadslug2 토론 합의)
985 * 문서의 C 서술을 삭제한다. (/threadslug3 토론 합의)
986}}}
r141
987----
r142
988변수값 정의는 고정 주석 문법을 입력하는 공간을 넘나들 수 있는가?
r141
989||{{{#!wiki style="display:inline;"
r170
990\{\{\{\#\!if exhibition1 = 1 {{{#green (변수값 정의)}}}
r143
991\#\#\@\{\{\{\#\!if exhibition1 == "1" {{{#orange (판별식)}}}
992\#\#\@\}\}\}
r142
993{{{#!if exhibition1 = 1
r144
994(exhibition1 변수값 정의.)}}}
r151
995##@{{{#!if +exhibition1 == 1
r144
996##@(exhibition1 판별식 테스트)}}}
r141
997}}}||
998||{{{#!wiki style="display:inline;"
r143
999\#\#\@\{\{\{\#\!if exhibition2 = 2 {{{#green (변수값 정의)}}}
1000\#\#\@\}\}\}
1001\{\{\{\#\!if exhibition2 == "2" {{{#orange (판별식)}}}
r149
1002\#\#\@\{\{\{\#\!if exhibition2 == "2" {{{#orange (판별식)}}}
r141
1003##@{{{#!if exhibition2 = 2
r149
1004##@(exhibition2 변수값 정의 시도.)}}}
r151
1005{{{#!if +exhibition2 == 2
r149
1006(exhibition2 판별식 테스트)}}}}}}
r151
1007##@{{{#!if +exhibition2 == 2
r150
1008##@(exhibition2 변수값 테스트.)}}}
r152
1009{{{#!if exhibition2 == null
1010exhibition2 은 여기서 null로 나온다.}}}
r150
1011||
r143
1012||{{{#!wiki style="display:inline;"
1013\#\#\@\{\{\{\#\!if exhibition3 == "3" {{{#orange (판별식)}}}
1014\#\#\@\}\}\}
1015\{\{\{\#\!if exhibition3 = 3 {{{#green (변수값 정의)}}}
r151
1016##@{{{#!if +exhibition3 == 3
r144
1017##@(exhibition3 판별식 테스트.)}}}
r143
1018{{{#!if exhibition3 = 3
r144
1019(exhibition3 변수값 정의.)}}}}}}||
r145
1020||{{{#!wiki style="display:inline;"
r170
1021\{\{\{\#\!if exhibition4 = 4 {{{#green (변수값 정의)}}}
r146
1022\#\#\@\{\{\{\#\!if exhibition4 == {{{#red null}}} {{{#orange (판별식)}}}
r145
1023\#\#\@\}\}\}
1024{{{#!if exhibition4 = 4
r146
1025(exhibition4 변수값 정의.)}}}
r145
1026##@{{{#!if exhibition4 == null
1027##@(exhibition4는 null로 나오는지 테스트)}}}
1028}}}||
r146
1029||{{{#!wiki style="display:inline;"
r170
1030\{\{\{\#\!if exhibition5 = 5 {{{#green (변수값 정의)}}}
r146
1031\#\#\@\{\{\{\#\!if exhibition5 {{{#orangered =}}} {{{#red 2}}}, exhibition5 == "2"{{{#orange (판별식)}}}
1032\#\#\@\}\}\}
r151
1033{{{#!if this.exhibition5 = 5
1034(exhibition5 변수값을 5로 정의.)}}}{{{#!if +exhibition5==5
10355인지 테스트.}}}
r147
1036##@{{{#!if exhibition5 = 2
r151
1037##@}}}{{{#!if +exhibition5 == 2
r150
1038##@(exhibition5는 고정 주석 출력 공간에서 2로 정의되는지 테스트.)}}}
r151
1039{{{#!if +exhibition5 != 2
1040그런데 고정 주석 출력 공간 안에서 "2"로 정의해도 여기에는 '2'가 아닌지 테스트.}}}{{{#!if +exhibition5 == 2
1041'2'인지 테스트.}}}{{{#!if +exhibition5 == 5
r149
1042'5'인지 테스트.}}}{{{#!if exhibition5 == null
r148
1043null인지 테스트.}}}
r146
1044}}}||
r84
1045
r146
1046{{{#orange 결론1}}} : 출력되지 않는 점을 이용하면 [[\#\#주석]] 못지 않게 활용할 수 있을 듯하다.
r153
1047{{{#orange 결론2}}} : 같은 문서 안에서 고정 주석을 출력하는 공간 안과 밖에서 변수는 같은 이름의 변수라 하더라도 별개의 값으로 정의된다. 안에서 정의된 값이 바깥에 영향을 주지 않고 바깥에서 정의된 값이 안에 영향을 주지 않는다.
r84
1048----
1049
r197
1050== 리스트(List) 변수 테스트 ==
r119
1051{{{#!if this.var2_1="으아니"
1052}}}{{{#!if var2_1=="으아니"
1053this.var2_1를 "[[https://namu.wiki/w/권진수#s-3|으아니]]"로 정의해본다.}}}
1054{{{#!if this.var2_2=var2_1+var2_1
1055}}}{{{#!if var2_2=="으아니으아니"
1056this.var2_2=var2_1+var2_1로 정의했을 때 var2_2이 텍스트의 합도 된다.}}}
r190
1057
1058{{{#!if f={a:(x*x)+3*x, b:1}
1059가령 f={a:(x*x)+3*x, b:1}로 정의해놓고 }}}{{{#!if x=4
1060x=4로 정의하게 되면 }}}{{{#!if f['b']==1
1061f['a']는 정의되지 않아도 f['b']==1이다.}}} 만약에 {{{#!if g=f
1062g=f 로 두면 }}}{{{#!if g==f
1063g==f이고 }}}{{{#!if g['b']==1
r191
1064g['b']==1이지만 g!={a:(x*x)+3*x, b:1}이다. }}}먼저 정의된 값을 따라가지 x가 바뀐다고 해서 list안의 값이 같이 바뀌지는 않는다. 수동으로 다시 정의해줘야 하며, 만약 이 때 x값이 먼저 정의된 상황에서 {{{#!if f={a:(x*x)+3*x, b:1}
r190
1065f={a:(x*x)+3*x, b:1}로 다시 정의하면 }}}{{{#!if f['a']==28
r192
1066f['a']==28 이며, }}}{{{#!if x=5
1067x=5로 바꾼다고 해서 }}}{{{#!if f['a']==28
1068f['a']의 값이 40으로 되지는 않는다.}}}
r196
1069
1070{{{#!if (f['a']==28)&&(f['b']==1)
1071여기까지 보았을 때 값이 f['a']==28, f['b']==1이다. 앞에 그냥 a, b는 {{{#!if !(f[a]==28)
r197
1072f[a]==28이 false가 되는 점}}}에서 f={a:(x*x)+3*x,b:1}으로 정의할 때 변수의 index 이름이 텍스트값으로 바뀐 모양이다. }}}{{{#!if g=f
r196
1073이때 g=f로 다시 두면 }}}{{{#!if (g['a']==28)&&(g['b']==1)
r197
1074당연히 g['a']==28, g['b']==1이 되는데 }}}{{{#!if g=g.toString()
1075g=g.toString()을 걸면 }}}{{{#!if g.length==15
r198
1076g는 15자리 문자열로 바뀌며 }}}{{{#!if g=="[object Object]"
r200
1077[object Object]로만 바뀐다. --오구작 오구작-- }}}{{{#!if g=f
r202
1078(g=f로 }}}{{{#!if (f['a']==28)&&(f['b']==1)
1079다시 두고,) }}}{{{#!if g['a']=g['a'].toString()
r199
1080g['a']=g['a'].toString() 같은 것을 해야 }}}{{{#!if g['a']=="28"
1081g['a']=="28"이 된다.}}}
r201
1082
r202
1083--{{{#!if g=f
1084신기하게 g=f로 다시 두면 }}}{{{#!if !((g['a']==28)&&(g['b']==1))
1085g['a']==28, g['b']==1이 되지 않는다. --something went wrong?-- }}}{{{#!if f['a']!=28
1086f를 건드리지 않았음에도 f['a']==28이 아니다.}}}-- {{{#!if f['a']=="28"
r204
1087f를 건드리지 않았음에도 f['a']=="28"이 되어 있다. }}}{{{#!if g['a']=="28"
1088그렇게 되면 앞에서 g=f로 다시 정의했으므로 당연히 g['a']=="28"이다. }}}{{{#!if f['a']=+(f['a']+"0")
r203
1089f['a']=+(f['a']+"0")으로 두면 +"280"이므로 280일 터인데 }}}{{{#!if g['a']==280
r205
1090신기하게 g를 건드리지 않았는데도 g['a']=280이 되어 있다.}}} List로 정의한 변수로 정의하면 모종의 주소값이 주어지고 그 안의 값이 공유되는 모양이다.
1091
1092{{{#!if h={a:180, b:2}
1093다른 변수 h에 a, b를 다른 값으로 주어 h={a:180, b:2}으로 새로운 List를 정의하면 }}}{{{#!if h['a']==180
1094h['a']==180 값은 }}}{{{#!if f['a']==280
1095f['a']의 값에 영향을 주지 않는다. 여전히 f['a']==280이다.}}}
r208
1096
1097{{{#!if h['a']=h['a']+f['a']
1098h['a']=h['a']+f['a']로 주면 }}}{{{#!if h['a']==460
r209
1099h['a']==460 이며 (280+180==460) }}}{{{#!if g['a']=g['a']-100
r208
1100g['a']에서 100을 뺀다면 }}}{{{#!if f['a']==180
1101f['a']==180이지만 }}}{{{#!if h['a']==460
r209
1102h['a']는 360이 아니라 여전히 460이다. }}}{{{#!if i=h
1103물론 i=h으로 두고 }}}{{{#!if i['a']=i['a']-100
1104i['a']에서 100을 빼면 }}}{{{#!if h['a']==360
r214
1105h['a']는 360이 된다. }}}{{{#!if i['b']==2
1106i['b']의 값은 그대로이다.}}}
r210
1107
1108{{{#!if i=i-10
1109이제 여기서 i=i-10으로 10을 빼면 어떻게 될까. }}}{{{#!if h['a']==360
r212
1110h['a'] 값은 360에서 10을 뺀 350으로 되지는 않는다. }}}{{{#!if i['a']!=360
r213
1111i['a']는 바뀌었는데 }}}{{{#!if i['a']!=350
1112360-10은 아니다. }}}{{{#!if i==-10
r211
1113i==-10으로는 나온다. }}}{{{#!if j="테스트", +j==0
1114숫자가 아닌 문자열 값은 0으로 나오겠지만 }}}{{{#!if j=j-10, +j==-10
r213
1115문자열 값에서 숫자를 빼게 되면 뺀 값으로는 된다. }}}{{{#!if i['a']!=0
1116i['a']가 0은 아닌 무언가인데, }}}{{{#!if i['a']==null
r214
1117따지고 보면 List로 정의한 값이 지워진다. }}}{{{#!if i['b']==null
1118있었는데 없어진 모양새로 보아서는 리스트에 숫자로 빼면 숫자값으로 바뀌는 모양이다.}}}
1119
1120{{{#!if i=h
1121(i=h로 두게 되면 }}}{{{#!if i['b']==2
r216
1122i['b']==2가 된다.) }}}{{{#!if g['a']==180
1123g['a']==180이고 }}}{{{#!if g['b']==1
1124g['b']==1이라서 벡터의 합처럼 {와 }로 만든 g+i 같은 것이 정의될까 싶었지만 그렇지는 않다. }}}{{{#!if h=g+i
1125(테스트)}}}{{{#!if f=[100, 50], h=[20, 10]
1126[와 ]로 만든 리스트도 마찬가지이다. }}}{{{#!if i=g+h
1127(테스트)}}}
r301
1128
1129== 함수 테스트 ==
1130{{{#!if a=time()
r302
1131time 함수는 1970년 1월 1일 0시 0분 0초로부터 현재시각이 몇 초가 지났는가를 정수로 나타낸다. 변수명과 함수와 구분하고자 괄호()를 사용한다. --[[https://namu.wiki/w/1972년 11월 21일|time()==91184400]], 김두한은 오랜 지병이었던 고혈압으로 쓰러졌다.--}}}
r220
1132== 변수값 형식 동치 테스트 ==
r217
1133{{{#!if a=5, b=5.0
1134가령 a에 5(정수값), b에 5.0(실수값)을 정의하면 }}}{{{#!if a!=b
r219
1135a와 b의 값은 같으나 형식이 서로 달라서 다른 값으로 인식된다. 엄밀히 보자면 {{{#orange {{{!=}}}}}}이 아니라 {{{#gray ({{{=}}}이 하나 더 들어간)}}} {{{#orange {{{!==}}}}}}을 써야 하지 않겠는가 싶지만 아무래도 the seed엔진에서 ==이 값의 형식까지 일치해야 같은 것이라고 인식하는 부분이므로 넘어가자? JavaScript 정도로 가면 {{{==}}}은 true이나 {{{===}}}은 false로 나올 것이다.}}}
r256
1136the seed에는 ===, !== 구문이 지원되지 않는다.
r221
1137
r267
1138== 프로그래밍 정수값 ==
1139=== 16진법(0x~) 테스트 ===
r256
1140{{{#!if (0==0x0000)&&(65535==0xffff)
r266
1141{{{#!if "T"[0]==0x54
1142"T"[0]==0x54로 두듯이 }}}정수 가운데 0 이상 65535이하의 정수는 16진법과 같은 것으로 취급한다. }}}{{{#!if (65536==0x00010000)&&(268435456==0x10000000)&&(0x00010000!=0x0000)
r260
11435자리 이상은 안 되길래 0x1234 식의 4자리까지만 되는가 싶었는데 --언제 잠수함 패치를 때려서-- 16진법 8자리도 된다. }}}{{{#!if (65536==0x0000000000010000)&&(18446744073709551615==0xffffffffffffffff)
r264
1144더 테스트 해봐야 되겠지만 18,446,744,073,709,551,615(16^^16^^-1 == 0xffffffffffffffff)의 unsigned long integer 까지만 지원되는 모양이다. }}}{{{#!if 0xfffffffe+0x00000001==0xffffffff
r262
11458자리에서 덧셈 연산과 }}}{{{#!if 0x02000000*0x00000008==0x10000000
1146곱셈 연산은 지원되고 }}}{{{#!if 0xffffffff+0x00000001==0x100000000
1147이 이상도 지원된다. }}}{{{#!if 0xffffffffffffff+0x1==0x100000000000000
r264
1148그러나 15자리를 넘어 16자리 연산은 signed long integer 문제 때문인지 문법이 깨질 수 있다. }}}{{{#!if 0x7ffffffffffffffe+0x1==9223372036854775807
1149signed long integer의 한계 안에서만 연산을 할 수 있는 모양이다.}}}
r258
1150
r269
1151=== 8진법(0o~), 2진법(0b~) ===
r267
1152{{{#!if 0o20==16
11530{{{#orange x}}}로 시작하는 16진법(he{{{#orange x}}}adecimal)만이 아니라 0{{{#orange o}}}로 시작하는 8진법({{{#orange o}}}ctal)도 지원된다. }}}{{{#!if 0O37+0O43==0O102
1154대문자를 쓰는 0{{{#orange O}}}로도 8진법 표기가 가능하다. (0{{{#orange O}}}37+0{{{#orange O}}}43==0{{{#orange O}}}102)}}}
1155
1156{{{#!if 0b101101011==363
r268
11570{{{#orange b}}}로 시작하는 2진법({{{#orange b}}}inary)도 지원된다. }}}{{{#!if 0B11111==31
1158대문자로 쓴 0{{{#orange B}}}도 가능하다.}}}
r267
1159
1160{{{#!if a=0b1101011, b=0o32274, c=0x14fa
1161}}}2진수, 8진수 16진수 값으로 변수를 정의하면 매개변수 기호 @을 이용하여 출력할 때 10진수 정수값이 나온다. 이를테면 a=0b1101011, b=0o32274, c=0x14fa으로 정의할 때 a, b, c는 각각 @a@, @b@, @c@로 나온다.
1162
r288
1163{{{#!if 0o80>0
r269
1164테스트}}}당연하겠지만 각 진법에서 표기할 수 없는 수를 적으면 문법이 깨진다.
1165
r273
1166--parseInt 함수는 2와 8, 10, 16 정도만 안다.-- {{{#!if (parseInt("ff",16)==255)&&(parseInt("7777",8)==4095)
1167프로그래밍에서 2, 8, 10, 16진법을 주로 다루니 parseInt는 그정도만 지원되는 모양이다.}}}
r288
1168
11690x00 외 다른 알파벳도 가능하지 않을까 궁금할 수 있겠지만, 직접 해 보면 --delivery-- {{{#!if 0==0a00
1170a}}}{{{#!if 0==0b00
1171b}}}{{{#!if 0==0c00
1172c}}}{{{#!if 0==0d00
1173d}}}{{{#!if 0==0e00
1174e}}}{{{#!if 0==0f00
1175f}}}{{{#!if 0==0g00
1176g}}}{{{#!if 0==0h00
1177h}}}{{{#!if 0==0i00
1178i}}}{{{#!if 0==0j00
1179j}}}{{{#!if 0==0k00
1180k}}}{{{#!if 0==0l00
1181l}}}{{{#!if 0==0m00
1182m}}}{{{#!if 0==0n00
1183n}}}{{{#!if 0==0o00
1184o}}}{{{#!if 0==0p00
1185p}}}{{{#!if 0==0q00
1186q}}}{{{#!if 0==0r00
1187r}}}{{{#!if 0==0s00
1188s}}}{{{#!if 0==0t00
1189t}}}{{{#!if 0==0u00
1190u}}}{{{#!if 0==0v00
1191v}}}{{{#!if 0==0w00
1192w}}}{{{#!if 0==0x00
1193x}}}{{{#!if 0==0y00
1194y}}}{{{#!if 0==0z00
r291
1195z}}}라는 단어 하나 만들 정도가 전부이다. (본 문단의 RAW 참고)
1196
1197{{{#orange 결론}}} : b, o, x가 프로그래밍 진법으로 지원된다.
1198
1199== table if (if > print) ==
r296
1200{{{#!if a=1, b=0, c=true, d=false, e="텍스트", f=null, rouif=true, this.this=true
r291
1201}}}
r294
1202||<table bgcolor=transparent,transparent>table에 지원되는 if 문법은 표로 된 행(row)와 열(data, column) 중 행(row)을 출력하느냐 마느냐를 결정하는 rowif가 있다. --tableif를 넣고 싶다면 table을 통으로 if 출력 부분에 넣으라는 모양이다-- 비교할 대상은 기본적으로 변수(variable)이다.
r291
1203곧 {{{#!wiki style="display: inline; font-family: monospace"
r295
1204{{{#orange <}}}''({{{#deepskyblue if 명령문}}})''{{{#orangered =}}}''({{{#teal 변수}}} 또는 {{{#green 논리식}}})''{{{#orange >}}}}}} 모양으로 넣는다. ||
r291
1205||<rowif=this.a>a에 값 1을 부여하고 {{{<rowif=this.a>}}}를 준다면 해당 행이 출력된다. 반면 this.b=0을 주고 {{{<rowif=this.b>}}}를 주면 출력되지 않는다. (해당 문단의 RAW 참고) ||
1206||<rowif=this.b>테스트 ||
r292
1207||<rowif=c>논리값을 rowif로 가져올 때 true는 출력되고 false는 출력되지 않는다. ||
1208||<rowif=d> 테스트 ||
r291
1209||<rowif=(3==3)>rowif에 적당한 등호를 적어놓고 괄호 처리를 해도 rowif가 동작이 됨을 볼 수 있다. ||
1210||<rowif=(1!=0)>테이블 구문에서 속성을 부여하는 괄호인 {{{<}}}, {{{>}}} 기호를 먼저 읽기 때문인지 부등식은 나타내기 어렵다. ||
r292
1211||<rowif=("이런 일이 일어날 것 같은 조짐을 느꼈지.".length==23)>등호만 잘 적어 맞춘다면 텍스트 변수와 그 매서드(method, 보조 함수)를 가져와도 동작되는 현상을 볼 수 있다. ||
r291
1212||<rowif=("하지만 행정관이 내 말을 듣지 않았어.".length!=0x2f)>프로그래밍 변수를 가져와도 별 문제 없이 동작된다. ||
r293
1213||<rowif=e>숫자가 아닌 텍스트는 {{{#!if +e==0
1214정수값 0}}}이 주어지나 {{{#!if e&&true
1215논리값으로 텍스트&&true를 연산하면 true}}}가 되므로 rowif를 걸면 행이 나온다. 반면 {{{#!if f!=false
1216null은 false는 아니지만}}} {{{#!if f!=true
1217true도 되지 않는 별개의 상태}}}이므로 rowif에 null은 출력되지 않는다. ||
1218||<rowif=f> 테스트 ||
r296
1219||<rowif=rouif>rouif 라는 변수를 가져올 때 \<rouif=this.rouif>를 쓸 필요 없이 \<rouif={{{#teal rouif}}}>로 써도 된다. ||
1220||<rouif=this>그리고 this.this 라는 변수를 가져올 때 \<rouif=this.this>를 쓸 필요 없이 \<rouif={{{#teal this}}}>로 써도 된다. ||
r291
1221
1222{{{#orange 결론}}} : rowif는 \<rowif=(true로 나오는 값)\>일 때 해당 행이 출력된다. 단, 부등호는 구문 컴파일 문제가 있는지 잘 되지 않는다.
1223
r26
1224== 메모 ==
r72
1225 * If 조건문에 함수를 넣을 수 있을까?
r77
1226예 : dday를 넣어서 누구누구 운영자가 재직 며칠이 되었음을 적을 수 있음, pagecount를 넣어서 이 문서 개수가 몇 개를 돌파했음을 알릴 수 있음, 대문 기념일 틀을 기념일 되기 한참 전에 미리 만들어놓고 if를 걸어놓을 수 있음, 나무위키 공지 틀(고정 주석 문법)에 if를 걸어놓을 수 있음.{{{#!folding 예시 보기, 접기
r70
1227{{{#orange 안내 :}}} 지원되지 않는 구문을 가상으로 적은 내용입니다.
r72
1228{{{#ABCDEF \{\{\{#!if (\$\$\$dday(2025-xx-xx)\$\$\$>=-1){{{#orange &}}}(\$\$\$dday(2025-xx-xx)\$\$\$<=+1)
r74
1229\[include(틀:대문/○○기념일)\][* 서버 시간과 시간대가 달라도 1일 전~1일 후 사이에는 기념일에 맞게 된다.]\}\}\}}}}{{{#00A495 \{\{\{#!if {{{#Red !(}}}(\$\$\$dday(2025-xx-xx)\$\$\$>=-1){{{#orange &}}}(\$\$\$dday(2025-xx-xx)\$\$\$<=+1){{{#Red )}}}
r73
1230\}\}\}\[include(틀:대문)\][* 평상시 환영 문구. "○○위키에 오신 것을 환영합니다."]}}}}}}
r70
1231-------
r74
1232 * 틀의 매개변수명에 관하여
1233{{{#!folding 펼치기, 접기
1234{{{#orange 안내 :}}} 테스트 필요.
1235 1. 매개변수에 입력하면 텍스트가 출력되거나 출력되지 않는 wiki style 구문 전부를 if 구문으로 변환한다. 가령
1236 ||\#!wiki style="display:inline; display:{{{#tomato @@_@구버전 매개변수명@}}}=none"||
1237 이 있으면
1238 ||\#!if {{{#tomato @@_@구버전 매개변수명@}}}!=null||
1239 으로 바꾼다.
1240 1.#2 신버전과 나란히 입력한다.
1241 예 : \{\{\{#!if ({{{#tomato 구버전 매개변수명}}}!=null)^({{{#green 신버전 매개변수명}}}!=null)
1242 {{{#tomato @@_@구버전 매개변수명@}}}{{{#green @@_@신버전 매개변수명@}}}\}\}\}
1243 1.#3 {{{#green 신버전 매개변수명}}}을 입력해도 틀이 동작된다.
1244}}}
r72
1245-------
r106
1246 * elseif, else (관련 : [[https://feedback.theseed.io/posts/1576/if-munbeobe-elsewa-else-if-elif-munbeob-cuga|#]]{{{-3 ^^더시드포럼^^}}})
r233
1247{{{#!wiki style="overflow: hidden;"
r206
1248{{{#!folding 펼치기, 접기
r100
1249있으면 조금 편리하겠지만, 이렇게 적으면 되지 않을까?
1250{{{#orange \{\{\{}}}\#\!if {{{#green (조건문1)}}}
r206
1251{{{#skyblue (출력할 내용1)}}}{{{#orange \}\}\}}}}
1252{{{#orange \{\{\{}}}\#\!if {{{#orange \(}}}{{{#orangered \!}}}{{{#green (조건문1)}}}{{{#orange \)}}}{{{#orangered \&\&}}}{{{#green (조건문2)}}}
r100
1253{{{#skyblue (출력할 내용2)}}}{{{#orange \}\}\}}}}
r206
1254{{{#orange \{\{\{}}}\#\!if {{{#orange \(}}}{{{#orangered \!}}}{{{#purple \(}}}{{{#green (조건문1)}}}||{{{#green (조건문2)}}}{{{#purple \)}}}{{{#orange \)}}}{{{#orangered \&\&}}}{{{#green (조건문3)}}}
r102
1255{{{#skyblue (출력할 내용3)}}}{{{#orange \}\}\}}}}
r206
1256{{{#orange \{\{\{}}}\#\!if {{{#orange \(}}}{{{#orangered \!}}}{{{#purple \(}}}{{{#green (조건문1)}}}||{{{#green (조건문2)}}}||{{{#green (조건문3)}}}{{{#purple \)}}}{{{#orange \)}}}{{{#orangered \&\&}}}{{{#green (조건문4)}}}
r102
1257{{{#skyblue (출력할 내용4)}}}{{{#orange \}\}\}}}}
1258.....
r103
1259{{{#orange \{\{\{}}}\#\!if {{{#orange \(}}}{{{#orangered \!}}}{{{#purple \(}}}{{{#green (조건문1)}}}||{{{#green (조건문2)}}}||{{{#green (조건문3)}}}|| ... ||{{{#green (조건문<math>n</math>)}}}{{{#purple \)}}}{{{#orange \)}}}{{{#orangered \&\&}}}{{{#green (조건문<math>n+1</math>)}}}
r102
1260{{{#skyblue (출력할 내용<math>n+1</math>)}}}{{{#orange \}\}\}}}}
r103
1261그리고 else를 만들고 싶다면
1262{{{#orange \{\{\{}}}\#\!if {{{#orange \(}}}{{{#orangered \!}}}{{{#purple \(}}}{{{#green (조건문1)}}}||{{{#green (조건문2)}}}||{{{#green (조건문3)}}}|| ... ||{{{#green (조건문<math>n+1</math>)}}}{{{#purple \)}}}{{{#orange \)}}}
1263{{{#skyblue (출력할 내용)}}}{{{#orange \}\}\}}}}
r106
1264
r206
1265길게 쓰기 귀찮다면 true 또는 false로 값을 주는 변수를 만들어볼 수 있는데, 식 한두 개로 만드는 elseif들이라면 elseif가 2~3번 이상 나와야 글자수를 따졌을 때 입력할 만하다.
1266{{{#orange \{\{\{}}}\#\!if {{{#green case1}}}{{{#orange =}}}{{{#green (조건문1)}}}{{{#orange ,}}} {{{#green case1}}}
1267{{{#skyblue (출력할 내용1)}}}}{{{#orange \}\}\}}}}
1268{{{#orange \{\{\{}}}\#\!if {{{#green case2}}}{{{#orange =}}}{{{#orange \(}}}{{{#orangered \!}}}{{{#green case1}}}{{{#orangered \&\&}}}{{{#green (조건문2)}}}{{{#orange \)}}}{{{#orange ,}}} {{{#green case2}}}
1269{{{#skyblue (출력할 내용2)}}}{{{#orange \}\}\}}}}
1270{{{#orange \{\{\{}}}\#\!if {{{#green case3}}}{{{#orange =}}}{{{#orange \(}}}{{{#orangered \!}}}{{{#green case2}}}{{{#orangered \&\&}}}{{{#green (조건문3)}}}{{{#orange \)}}}{{{#orange ,}}} {{{#green case3}}}
1271{{{#skyblue (출력할 내용3)}}}{{{#orange \}\}\}}}}
1272{{{#orange \{\{\{}}}\#\!if {{{#green case4}}}{{{#orange =}}}{{{#orange \(}}}{{{#orangered \!}}}{{{#green case3}}}{{{#orangered \&\&}}}{{{#green (조건문4)}}}{{{#orange \)}}}{{{#orange ,}}} {{{#green case4}}}
1273{{{#skyblue (출력할 내용4)}}}{{{#orange \}\}\}}}}
1274.....
r207
1275{{{#orange \{\{\{}}}\#\!if {{{#green case<math>n+1</math>}}}{{{#orange =\(}}}{{{#orangered \!}}}{{{#green case<math>n</math>}}}{{{#orangered \&\&}}}{{{#green (조건문<math>n+1</math>)}}}{{{#orange \)}}}{{{#orange ,}}} {{{#green case<math>n+1</math>}}}
r206
1276{{{#skyblue (출력할 내용<math>n+1</math>)}}}{{{#orange \}\}\}}}}
1277그리고 else를 만들고 싶다면
1278{{{#orange \{\{\{}}}\#\!if {{{#orangered \!}}}{{{#green (case<math>n+1</math>)}}}
1279{{{#skyblue (출력할 내용)}}}{{{#orange \}\}\}}}}
r232
1280}}}}}}
r100
1281-------
r72
1282 * 발전 가능성
r116
1283if 가 나왔으니 while, for 등 루프 연산, 그리고 더 나아가서 변수값 재지정[* 테스트 해본 결과 가능하다. 언제 업데이트 되었는지 모르겠지만.], break, continue 등 구문이 나올 수 있어 보인다. 그렇게 나오게 되면 문서는 하나의 스크립트가 될 수 있다. 루프(loop) 연산이 나오게 되면 [[2021년 the seed 엔진 위키 서버 과부하 사건|include 과부하 요청]] 같이 무한히 지속되는 연산 요청을 내지 않도록 시스템에서 의도적으로 루프를 몇 번까지만 반복할 수 있도록 제한을 걸어둘 것으로 보인다.
r63
1284
r1
1285== 결론 ==
r64
1286||{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline; font-family:monospace;"
1287\{\{\{#!if {{{#blue (논리식)}}}
r81
1288{{{#green (논리식이 true이면 출력할 내용)}}}\}\}\}}}}||
r120
1289||{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline; font-family:monospace;"
1290\{\{\{#!if {{{#blue (변수 정의(define) 식)}}}
1291{{{#green (성공적으로 정의되었을 때 출력할 내용)}}}\}\}\}}}}||
r84
1292||조건문에 지원되는 기능 : {{{#!wiki style="display: inline; font-family:monospace;"
1293true, false, null, this}}} 등등||
r1
1294|| 추정되는 문법 ||
r47
1295If구문은 고장난 구문(문법)은 아니지만, ---잠수함 패치로 인해--- 변수를 연결할 수 있는 입력방법을 찾아야 한다. 조건부에 텍스트값, 정수 숫자값, 실수 숫자값, 논리값(true 또는 false)은 지원되는 입력으로 보인다. 연산할 값의 종류와 연산하여 나오는 값의 종류에 알맞은 기호만 쓴다면 원하는 설계에서 크게 벗어나지 않게 이용할 수 있다.