r167
r1
1[[분류:테스트]]
2[목차]
r24
3== 개요 ==
r30
4[[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 문단]]도 참고.
5
r81
6if 구문(if 문법) 테스트용 [[위키위키]] 문서.
7편집하거나 검증할 때 RAW(원문)를 참조할 수 있다.
8if 구문은 문서에서만이 아니라 토론 스레드에도 지원된다.
r24
9== true, false ==
r1
10{{{#!undefined_command @a@==1
111}}}
12----
r54
13if true 1 (정의되지 않는 #!(Shebang) 구문(문법)이면 리터럴로 출력되어야 하겠으나 if는 그렇지 않다.[* 다만 아카라이브 채널위키에는 구현되어 있지 않아서 #!if까지 문구로 나온다.])
r1
14{{{#!if true
r41
151 (true는 출력된다.)}}}
r1
16----
17if false 1
18{{{#!if false
r41
191 (false는 출력되지 않는다.)}}}
r63
20
r82
21{{{#orange 결론}}} : true는 논리값 true로 동작된다.
r89
22
r167
23== |, & 기호 ==
r42
24=== 논리 연산 ===
r139
25두 식을 두고 | 기호 테스트를 해보았을 때, {{{#!if (1==1)|(0==0)
r137
26두 식이 모두 참일 때는 당연히 출력되며 }}}{{{#!if (1==1)|(1==0)
27마주 보는 두 식중 오른쪽이 거짓이 되었든 }}}{{{#!if (1==2)|(2==2)
28왼쪽이 거짓이 되었든 하나가 거짓이라 하더라도 나머지 하나가 참이라면 출력이 된다.}}} 양쪽의 식 모두가 거짓(false)이라면 출력되지 않는다. {{{#!if (1==2)|(1==0)
r24
29출력 (| 기호)}}}
r42
30
r137
31앞의 true와 false가 진짜 true, false로 동작되는지 확인해보는 겸 테스트를 해보자면 {{{#!if true | true
32true | true 로 적었을 때 출력이 된다. }}}{{{#!if true | false
33true | false 로 조건을 적든}}}{{{#!if false | true
r139
34false | true로 조건을 적든 출력이 되므로 true와 false는 true와 false가 맞다.}}} false | false 로 if를 걸었을 때 출력할 문구가 나오지 않는 상황을 보면 true가 true이고 false는 false임이 확실하다. {{{#!if false | false
r42
35출력 (| 기호)}}}
36
r137
37그러므로 | 기호는 논리연산 OR에 해당된다.
38
39만약 | 기호를 하나만 적지 않고 2개를 적어보면 어떻게 될까? {{{#!if true || true
40마찬가지로 동작된다.}}} 그러나 |기호를 3개를 적어 식으로 걸어보면 동작되지 않는다.{{{#!if true ||| true
41출력 (| 기호)}}}
r167
42
43앞의 true와 false를 다시 가져와서 & 기호 테스트를 할 수 있다. {{{#!if true & true
44양쪽 모두 true일 경우 (true & true) 출력할 문구가 나온다. }}}{{{#!if true & false
45출력1 (& 기호)}}}{{{#!if false & true
46출력2 (& 기호)}}}{{{#!if false & false
47출력3 (& 기호)}}} 어느 한 쪽이 false가 되면 출력되지 않고, 양쪽 모두 false가 된다면 출력되지 않는다.
48
r35
49=== 비트 연산 ===
r167
50| 기호, & 기호가 2진수 비트합으로도 처리되는 상황을 설명하자면 true와 false 진리값이 각각 1, 0인 논리를 시스템상을 먼저 볼 필요가 있다.
51||<table bgcolor=transparent,transparent>{{{#!wiki style="display: inline-block; margin: 0 5px;"
r139
52||<table bgcolor=transparent,transparent> || case1 || case2 || case3 || case4 ||
r167
53|| A || {{{#dodgerblue true}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} || {{{#tomato false}}} ||
54|| B || {{{#dodgerblue true}}} || {{{#tomato false}}} ||{{{#dodgerblue true}}} || {{{#tomato false}}} ||
55|| A {{{#orange \∨}}} B || {{{#dodgerblue true}}} || {{{#dodgerblue true}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} ||}}}||{{{#!wiki style="display: inline-block; margin: 0 5px;"
56||<table bgcolor=transparent,transparent> || case1 || case2 || case3 || case4 ||
57|| A || {{{#dodgerblue true}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} || {{{#tomato false}}} ||
58|| B || {{{#dodgerblue true}}} || {{{#tomato false}}} || {{{#dodgerblue true}}} || {{{#tomato false}}} ||
59|| A{{{#orange ∧}}}B || {{{#dodgerblue true}}} || {{{#tomato false}}} || {{{#tomato false}}} || {{{#tomato false}}} ||}}}||
60|| OR 연산 처리 || AND 연산 처리 ||
61OR(∨), AND(∧)는 위 표와 같이 처리된다. 2진법 수의 각 자리수에 따라 {{{#dodgerblue true}}}를 1, {{{#tomato false}}}를 0으로 놓고 | 연산은 OR(∨)처럼, &연산은 AND(∧)처럼 동작된다.
r33
62
r139
63{{{#!if (5|3) ==7
64이를 이진법에 적용하게 되자면 2진법의 각 자릿수별로 | 연산을 한 값을 보게 된다.
65이를테면 5 | 3을 보자면 이진법으로 변환한 값의 각 자릿수에 따라 연산이 되어 7이 나온다. {{{#!wiki style="display: inline; font-family: monospace;"
66(5|3)=7 }}}
67||<table bgcolor=transparent,transparent> 10진수 || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
r33
68|| 5 = || 1 || 0 || 1 ||
69|| 3 = || 0 || 1 || 1 ||
r139
70|| (5|3) = 7 || 1 || 1 || 1 ||}}}
71만약 (5|3)==6 으로 테스트하게 되면 일(2^^0^^)의 자릿수가 틀려 출력되지 않게 된다.{{{#!if (5|3) ==6
r33
72출력}}}
r139
73
74{{{#!if (9|5) ==13
75다른 예로 (9|5)==13을 걸게 되면 역시 동작된다.
r154
76||<table bgcolor=transparent,transparent> 10진수 || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
r42
77|| 9 = || 1 || 0 || 0 || 1 ||
78|| 5 = || 0 || 1 || 0 || 1 ||
79|| (9|5) = 13 || 1 || 1 || 0 || 1 ||
r139
80}}}
81(9|5)==12를 테스트하게 되면 일(2^^^0^^^)의 자릿수가 틀려서 출력되지 않는다.{{{#!if (9|5) ==12
r33
82출력 (1101)}}}
r139
83그러므로 | 기호는 비트 연산으로 쓰이든 논리 연산으로 쓰이든 "OR"로 계산된다.
84
r167
85& 기호를 이용한 연산을 보자. (25&19)=-17을 조건으로 걸어보면 {{{#!if (25&19)==17
r154
86출력된다. (25&19)==19를 보면 2^^^1^^^의 자릿수가 틀려서 출력되지 않는다.
87||<table bgcolor=transparent,transparent> 10진수 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
r42
88|| 25 || 1 || 1 || 0 || 0 || 1 ||
89|| 19 || 1 || 0 || 0 || 1 || 1 ||
r154
90|| (25&19) = 17 || 1 || 0 || 0 || 0 || 1 ||}}}{{{#!if (25&19)==19
r42
91출력}}}
r154
92한 가지 더 예를 들어 (20&11)==0을 조건으로 두면 {{{#!if (20&11)==0
93출력된다. 아래 표를 참고할 수 있다.
94||<table bgcolor=transparent,transparent> 10진수 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
r43
95|| 20 || 1 || 0 || 1 || 0 || 0 ||
96|| 11 || 0 || 1 || 0 || 1 || 1 ||
r154
97|| (20&11) = 0 || 0 || 0 || 0 || 0 || 0 ||}}}
98그러므로 & 기호는 비트 연산으로 쓰이든 논리 연산으로 쓰이든 "AND"로 계산된다.
r63
99
r167
100== 부등호, 숫자 연산 기호 ==
r1
101{{{#!if (1<2)&(2>=-3)
r154
102부등호 계산으로 조건식을 만들 때, 음수값도 읽을 수 있다.}}}
103
104||<table bgcolor=transparent,transparent> 축약 || 뜻 || 주의사항 ||
r155
105||<-1> ||<-1> greater ||<-1>{{{#!if 10>9
r159
106{{{#orange \>}}}만 된다}}}. {{{#orange \>\>}}}는 안 된다.[* 후술할 비트 연산자 중 하나이다.] {{{#!if 10>>9
r154
107\>\>}}} ||
108||<-1><|2> geq ||<-1><|2>'''g'''reater than or '''eq'''ual to ||<-1>{{{#!if (1<2)&(2>=-3)
109{{{#orange >=}}}로 입력 안 하고 {{{#orange =>}}}로 입력하면 깨진다.}}}{{{#!if (1<2)&(2=>-3)
110테스트}}} ||
r155
111||||||<-1>{{{#!if (1>=1)
r159
1121{{{#orange >=}}}1 을 조건으로 걸면 true가 된다.}}} ||
r154
113||<-1><|2> leq ||<-1><|2>'''l'''ess than or '''eq'''ual to ||<-1>{{{#!if -100<=99
r159
114{{{#orange \<=}}}로 입력 안 하고 {{{#orange =<}}}로 입력하면 깨진다.}}}{{{#!if -100=<99
r154
115테스트}}}[br]{{{#!if -100<=99
116한 때 (<=) 로 해도 나오지 않다가 ---잠수함 패치로--- fix된 모양이다.}}} ||
r155
117||||||<-1>{{{#!if (1<=1)
r159
1181{{{#orange <=}}}1 을 조건으로 걸면 true로 나온다}}} ||
r155
119 * {{{#!if ((4==4)&(-2>-3))|((1>0)&(2<4))
r154
120부등호 식으로도 true와 false를 만들 수 있다.}}}
r155
121
122 * {{{#!if 2*3==6
123\* 기호는 "곱(times) 기호이다.}}} 식을 틀리게 만들면 출력되지 않는다. (따라서 *는 지원되는 모양이다.){{{#!if 2*3==5
124테스트}}}
125 * {{{#!if 10/5==2
126\/ 기호는 "나누기(devided by)" 기호이다.}}} / 식을 틀리게 만들면 나오지 않는다. (따라서 /는 지원되는 모양이다.){{{#!if 10/5==1
127테스트}}}
r154
128
r155
129{{{#orange 결론}}} : * / > >= < <= 연산기호는 지원된다.
r24
130== ^ 기호 테스트 ==
r60
131=== 논리 연산 ===
r167
132계산기로 {{{#!wiki style="display: inline; font-family: monospace;"
133\^}}} 기호를 입력하면 (exponent?)
r10
134{{{#!if 10^4==10000
r24
135출력 (^기호)}}}
r11
136----
137^(1/2)
138{{{#!if 1024^(1/2)==32
r24
139출력 (^기호)}}}
r12
140----
r41
141^ 틀리게 해도 나오는 것으로 봐서는 지원되지 않는 모양이다?[* 지수가 아니라 프로그래밍 전용 연산]
r12
142{{{#!if 10^4==9999
r24
143출력 (^기호)}}}
144----
r41
145true ^ true : 출력되지 않는다.
r24
146{{{#!if true ^ true
147출력 (^ 기호)}}}
148----
r41
149true ^ false : 출력된다.
r24
150{{{#!if true ^ false
151출력 (^ 기호)}}}
152----
r41
153false ^ true : 출력된다.
r24
154{{{#!if false ^ true
155출력 (^ 기호)}}}
156----
r41
157false & false : 출력되지 않는다.
r24
158{{{#!if false ^ false
159출력 (^ 기호)}}}
160----
r63
161A^B==C {{{-2 ([math(A \neq 0,\ B \neq C)])}}}꼴을 if 조건문으로 걸어 놨는데 true가 된 것은, ==를 먼저 연산해서 A^false가 되었는데 A가 0이 아니므로 true로 읽히게 되어 A^false가 true로 반환되서 if 조건문이 true로 되어버린 모양.
r59
1621^2==3 : 1^false가 되어 출력된다.
163{{{#!if 1^2==3
164출력}}}
165----
1661^1==1 : 1^true가 되어 출력되지 않는다.
167{{{#!if 1^1==1
168출력}}}
169----
1700^1==2 : 0^false가 되어 출력되지 않는다.
r58
171{{{#!if 0^1==2
172출력}}}
r59
173----
1740^1==1 : 0^true가 되어 출력된다.
175{{{#!if 0^1==1
176출력}}}
177----
r82
178{{{#orange 결론}}}
179 : ^는 논리연산 XOR
r63
180
r60
181=== 비트 연산 ===
182| 기호, & 기호와 같이 2진법의 각 자릿수별로 계산된다.
183
184|| 10진법 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
185|| 20 || 1 || 0 || 1 || 0 || 0 ||
186|| 11 || 0 || 1 || 0 || 1 || 1 ||
187|| (20^11)=31 || 1 || 1 || 1 || 1 || 1 ||
188(20^11)=31 : 출력된다.
189{{{#!if (20^11)==31
190출력 (20^11)=31}}}
191----
192(20^11)=30 : 2^^^0^^^의 자릿수가 틀려서 출력되지 않는다.
193{{{#!if (20^11)==30
194출력}}}
r66
195-----
196양변에 ^을 걸어도 출력된다.
197|| 10진법 || 2^^^4^^^ || 2^^^3^^^ || 2^^^2^^^ || 2^^^1^^^ || 2^^^0^^^ ||
198|| 17 || 1 || 0 || 0 || 0 || 1 ||
199|| 14 || 0 || 1 || 1 || 1 || 0 ||
200|| (17^14)=31 || 1 || 1 || 1 || 1 || 1 ||
201(20^11)==(17^14) : 출력된다.
202{{{#!if (20^11)==(17^14)
203출력 }}}
204----
205(20^10)==(17^14) : 2^^^0^^^의 자릿수가 틀려서 출력되지 않는다.
206{{{#!if (20^10)==(17^14)
207출력 }}}
r83
208== ture, false, !기호 테스트 ==
r41
209false == false : 출력된다.
r27
210{{{#!if false==false
211출력 (f=f)}}}
212----
r83
213true == true : 출력된다.
214{{{#!if true==true
215출력 (t=t)}}}
216----
r41
217false == true : 출력되지 않는다.
r27
218{{{#!if false==true
219출력 (f=f)}}}
220----
r41
221false != true : 출력된다.
r27
222{{{#!if false != true
223출력 (!= 기호)}}}
224----
r41
2251!=0 : 출력된다.
r27
226{{{#!if 1!=0
227출력 (1!=0)}}}
228----
r41
2291 !=0 : 출력된다.
r28
230{{{#!if 1 !=0
231출력 (1 !=0)}}}
232----
r41
2331 !==0 : 출력되지 않는다.
r28
234{{{#!if 1 !==0
235출력 (1!==0)}}}
236----
r56
237!(1==0) : 출력된다.
238{{{#!if !(1==0)
239출력 !(1==0)}}}
240----
r41
2411<0 : 출력되지 않는다.
r28
242{{{#!if 1<0
243출력 (1<0)}}}
244----
r41
2451 !< 0 : 출력되지 않는다.
r28
246{{{#!if 1 !< 0
247출력 (1!< 0)}}}
248----
r41
2491 !(<) 0 : 출력되지 않는다. 부등호에 걸 수 있는 기호가 아니라서 깨진 모양이다.
r32
250{{{#!if 1 !(<) 0
251출력 (1!(<) 0)}}}
252----
r41
253!(1<0) : 출력된다.
r28
254{{{#!if !(1<0)
255출력 !(1<0)}}}
256----
r41
257!(true and true) : 출력되지 않는다.
r27
258{{{#!if !(true&true)
259출력 !(t&t)}}}
260----
r41
261!(true and false) : 출력된다.
r27
262{{{#!if !(true&false)
263출력 !(t&f)}}}
264----
r41
265!(false and false) : 출력된다.
r27
266{{{#!if !(false&false)
267출력 !(f&f)}}}
r41
268그냥 and 식 전체에 ! 씌우면 nand가 된다.
r28
269----
r29
270!(true ^ true)
271{{{#!if !(true^true)
272출력 !(t^t)}}}
273----
274!(true ^ false)
275{{{#!if !(true^false)
276출력 !(t^f)}}}
277----
278!(false ^ true)
279{{{#!if !(false^true)
280출력 !(f^t)}}}
281----
r28
282!(false ^ false)
283{{{#!if !(false^false)
284출력 !(f^f)}}}
r31
285그냥 ^ 식 전체에 ! 씌우면 xand(nxor)이다.
286----
r41
287!(!true) : 출력된다 (not of not)
r31
288{{{#!if !(!true)
289출력 !(!t)}}}
290----
r41
291!!true : 출력되지 않는다. !는 범위를 입력해줘야 동작되는 모양.
r31
292{{{#!if !!true)
293출력 (!!t)}}}
294----
r41
295not of not of not of true : 출력되지 않는다.
r31
296{{{#!if !(!(!true))
297출력 !(!(!t))}}}
298----
r41
299not of not of not of not of true ---사각형안의사각형안의--- : 출력된다.
r31
300{{{#!if !(!(!(!true)))
301출력 !(!(!(!t)))}}}
302----
r56
3030 : 진리값 0 (false)으로 읽히는지 출력되지 않는다.
304{{{#!if (0)
305출력}}}
306----
307!(0) : 출력된다.
308{{{#!if !(0)
309출력}}}
310----
3111 : 진리값 1 (true)으로 읽히는지 출력된다.
312{{{#!if (1)
313출력}}}
314----
315!(1) : 출력되지 않는다.
316{{{#!if !(1)
317출력}}}
318----
3192 : 출력된다.
320{{{#!if (2)
321출력}}}
322----
323!(2) : 출력되지 않는다.
324{{{#!if !(2)
325출력}}}
326----
3270.5 : 출력된다.
328{{{#!if (0.5)
329출력}}}
330----
331!(0.5) : 출력되지 않는다.
332{{{#!if !(0.5)
333출력}}}
334----
r82
335{{{#orange 결론}}} : !는 논리연산 NOT이고, 범위를 지정해줘야 동작된다.
r56
336---0만 아니면 될까?---
r36
337
r53
338== ~ 기호 테스트 ==
r41
339~false : 출력된다.
r36
340{{{#!if ~false
r38
341출력 ~f}}}
r37
342----
r41
343~(~true) : 출력된다.
r37
344{{{#!if ~(~true)
345출력 ~(~t)}}}
346----
r41
347~(!(~(!true))) : 출력된다.
r37
348{{{#!if ~(!(~(!true)))
349출력 ~(!(~(!t)))}}}
350----
r41
351~true : 출력된다.
r37
352{{{#!if ~true
353출력 ~t}}}
354----
r41
355~(true) : 출력된다.
r37
356{{{#!if ~(true)
357출력 ~(t)}}}
358----
r41
359(~true) : 출력된다.
r38
360{{{#!if (~true)
361출력 (~t)}}}
362----
r41
363~~true : 출력된다.
r37
364{{{#!if ~~true
365출력 ~~t}}}
366----
r41
367~(-1)=0 : 출력된다.
r38
368{{{#!if ~(-1)==0
369출력}}}
370----
r41
371~(-1)=1 : 출력되지 않는다.
r38
372{{{#!if ~(-1)==1
373출력}}}
374----
r41
375~(-2)=1 : 출력된다.
r39
376{{{#!if ~(-2)==1
377출력}}}
378----
r53
379~(~1)=1 : 출력된다.
380{{{#!if ~(~1)==1
381출력}}}
382----
r41
383~false=false : 출력되지 않는다.
r38
384{{{#!if ~false==false
385출력}}}
386----
r41
387~false=true : 출력되지 않는다.
r38
388{{{#!if ~false==true
389출력}}}
390----
r41
391~(!(true))=false : 출력되지 않는다.
r38
392{{{#!if ~(!true)==false
393출력}}}
394----
r84
395{{{#orange 결론}}} : ~ 기호는 논리 연산으로는 동작되지 않는다.
r40
396
397다만 위의 ~(-1)==1 을 가져와서 비트 연산이 참인지 거짓인지 나오는 결과를 두고 논리식을 만들기는 가능하다.
r41
398!(~(-1)==1) : false 부정이므로 출력된다.
r40
399{{{#!if !(~(-1)==1)
400출력}}}
r42
401----
402---만약에 if ~A|B을 해본다면?---
403
r48
404== % 기호 테스트 ==
405%는 윈도우즈 계산기 공학용에서 "%키"로도 쓰인다.
r52
406[math(5^2 \equiv 4\ (\bmod 7))] : ---그냥 왼쪽 식은 복잡한 식이고[* {{{#!wiki
407사실 [math(\equiv 11 \equiv 18 \equiv 25 \equiv 32 \equiv \cdots\ (\bmod 7))] 이지만 이 식에서는 오른쪽 수는 0 이상의 정수 가운데서 식을 만족하는 가장 작은 값을 생각한다.[br]물론 다음도 출력된다.
408if 18%7=32%7
409{{{#!if 18%7==32%7
410출력 (18%7=32%7)}}}
411
412여기서 %를 적어놓지 않으면 출력되지 않는다.
413예 : 5**2=11 로만 적어놓으면 출력되지 않는다.
414{{{#!if 5**2%7==11
415출력 (5**2%7=11)}}}}}}] --- 5^^^2^^^=25를 7로 나눈 나머지는 4이다.
r48
416{{{#!if 5**2%7==4
r52
417출력 (5^^^2^^^%7=4)
418----}}}
r48
419----
420식을 틀리게 적으면 출력되지 않는다.
421{{{#!if 5**2%7==3
422출력}}}
r50
423----
r63
424
r82
425== null 과 "" 테스트 ==
426""과 ""은 같다.
427{{{#!if "" == ""
428출력}}}
429----
430Null과 ""은 다르다.
431{{{#!if null == ""
432출력}}}
433----
r87
434좌 우를 바꿔 적어도 다르다.
435{{{#!if "" == null
436출력}}}
437----
r82
438null과 null은 같다.
439{{{#!if null==null
440출력}}}
441----
r86
442if null 은 출력되지 않는다.
443{{{#!if null
444출력}}}
445----
446그럼 앞에서 if false도 출력되지 않았으니까 null==false일까?
r82
447null=false 테스트 하면 출력되지 않는다.
448{{{#!if null==false
449출력}}}
r86
450
451null과 false는 같지 않다. (나무위키 도움말에서) if null이면 거짓이므로 출력이 안 되는 것이 아니라, if 조건부 null이 true 논리값으로 나오지 않아서 출력이 안 되는 것이다. ---틀린 말은 아닌데, 팩트가 하나도 없으면 참은 아니기 때문이다.---
r82
452----
453null과 true는 다르다. null=true 테스트를 하면 출력되지 않는다.
454{{{#!if null==true
455출력}}}
r87
456----
457그리고 if ""를 해도 출력되지 않는다.
458{{{#!if ""
459출력}}}
460----
r82
461{{{#orange 결론 1}}} : 호출할 때 {{{#!wiki style="display: inline; font-family: monospace;"
462{{{#skyblue 변수명}}}=}}}이라고 적으면 {{{#skyblue 변수명}}}은 "정의한 값이 없음(null)"이 아니라 "빈 텍스트 값"이 된다.
463{{{#orange 결론 2}}} : true, false는 "정의한 논리값"이므로 null과 다르다.
464
r105
465{{{#orange 기타}}} : if 구문에 숨은 함수나 연산자가 있는지 찾아보고 싶다면 {{{#dodgerblue 아무 텍스트}}}[* 단, 기호가 들어가지 않을 것]를 가지고 와서 null과 같은지 대조해보면 된다.
r104
466>\{\{\{\#\!if {{{#dodgerblue ''(입력한 텍스트)''}}}==null
467>피노키오의 코는 길어지지 않았다.\}\}\}
468{{{#dodgerblue 입력한 텍스트}}}가 단순 변수명이면 식이 "변수명=null"이 되어 true가 되어 출력할 내용이 나올 것이고, {{{#dodgerblue 입력한 텍스트}}}가 연산자이면 출력되지 않을 것이다.
r84
469== 수 체계 확장 테스트 ==
r163
470{{{+1
471 * 소수의 비밀}}}[math(1.1+0.1=1.2)]는 맞는데, 정작 if문 걸어보면 틀린다. 이유는 아래 영상을 참고.
r162
472[youtube(-GsrYvZoAdA)]
473{{{#!if 1.1+0.1==1.2
474테스트}}}
r166
475요약해보자면, 소수값은 2진법 버림값으로 저장되므로 미묘한 오차가 발생한다고 한다.
r165
476{{{#!if 1.1+0.1>1.2
r166
477실제 테스트 해보면 1.1+0.1은 1.1으로 저장되는 값과 0.1으로 저장되는 값을 더하므로, 1.2으로 저장되는 값보다 '''크게''' 나오므로 1.1+0.1>1.2가 된다.}}}
r163
478
r54
479제곱근
480[math(2\times\sqrt{3}=\sqrt{12})] : 출력된다.
481{{{#!if 2.0*(3.0**0.5)==12.0**0.5
482출력}}}
483----
r55
484다만, 아직까지는 [math(\sqrt{a}\times\sqrt{b}=\sqrt{ab})] 식이 정확히 동작되는지 더 살펴봐야 할듯.
485[math(\sqrt{13}\times\sqrt{10}=\sqrt{130})] : 출력된다.
486{{{#!if (13.0**0.5)*(10.0**0.5)==130.0**0.5
487출력}}}
488----
489[math(\sqrt{13}\times\sqrt{11}=\sqrt{143})] : 출력되지 않는다.
490{{{#!if (13.0**0.5)*(11.0**0.5)==(143.0**0.5)
491출력}}}
492----
r65
493%랑 엮이는 것인가?
494[math(\sqrt{13}\times\sqrt{11} {\color{blue}{\text{\%1000}}} =\sqrt{143} {\color{blue}{\text{\%1000}}})] : 출력된다.
495{{{#!if (13.0**0.5)*(11.0**0.5)%1000==(143.0**0.5)%1000
496출력}}}
497----
r55
498[math(\sqrt{12}\times\sqrt{11}=\sqrt{132})] : 출력된다.
499{{{#!if (12.0**0.5)*(11.0**0.5)==(132.0**0.5)
500출력}}}
501----
502[math(\sqrt{11}\times\sqrt{11}=\sqrt{121})] : 출력된다.
503{{{#!if (11.0**0.5)*(11.0**0.5)==(121.0**0.5)
504출력}}}
505----
r45
506지수의 지수
r63
507{{{+2 2^^^{{{#!wiki style="display: inline"
r44
5082^^^2^^^}}}^^^=16}}} : 출력된다.
509{{{#!if 2.0**(2.0**2.0)==0**1+16
510출력}}}
511----
r63
512{{{+1 2^^^{{{#!wiki style="display: inline"
r44
5132^^^2^^^}}}^^^=15}}}로 하면 출력되지 않는다.
514{{{#!if 2.0**(2.0**2.0)==0**1+15
515출력}}}
516----
r63
517{{{+2 3^^^{{{#!wiki style="display: inline"
r46
5183^^^2^^^}}}^^^=3^^^9^^^=19683}}} : 출력된다.
519{{{#!if 3.0**(3.0**2.0)==0**1+19683
r44
520출력}}}
521----
r63
522{{{+2 3^^^{{{#!wiki style="display: inline"
r46
5233^^^2^^^}}}^^^=3^^^9^^^=19682}}} : 출력되지 않는다.
524{{{#!if 3.0**(3.0**2.0)==0**1+19682
r44
525출력}}}
526----
r45
527지수의 지수의 지수
r63
528{{{+2 2^^^{{{#!wiki style="display: inline"
5292^^^{{{#!wiki style="display: inline"
r45
5302^^^2^^^}}}^^^}}}^^^=2^^^16^^^=65536}}} : 출력된다.
531{{{#!if 2.0**(2.0**(2.0**2.0))==0**1+65536
532출력}}}
533----
r63
534{{{+2 2^^^{{{#!wiki style="display: inline"
5352^^^{{{#!wiki style="display: inline"
r45
5362^^^2^^^}}}^^^}}}^^^=2^^^16^^^=65535}}} : 출력되지 않는다.
537{{{#!if 2.0**(2.0**(2.0**2.0))==0**1+65535
538출력}}}
539----
r63
540무한 지수 탑 함수 테스트를 해볼 겸 지수의 지수의 지수의 지수(...)를 테스트 해볼 수는 있겠지만 적당한 값을 넣어야 한다. 가령 {{{+2 2^^^{{{#!wiki style="display: inline"
5412^^^{{{#!wiki style="display: inline"
5422^^^{{{#!wiki style="display: inline"
r49
5432^^^2^^^}}}^^^}}}^^^}}}^^^}}}를 계산기에서 계산하면 {{{오버플로}}}가 나온다.
544----
r44
545[math(\left(1^{{1}\over{2}}\right)^{2}=1)]
546{{{#!if (1.0**0.5)**2.0==0**1+1
547출력}}}
548----
r45
549[math(\left((-1)^{{1}\over{2}}\right)^{2}=-1)] : [[허수]]는 불가능한 모양이다.
550{{{#!if ((-1.0)**0.5)**2.0==0.0**1.0-1.0
r44
551출력}}}
552
r84
553{{{#orange 결론}}} : (%로 잘만 달랜다면) 실수 범위의 계산까지 다룰 수 있다.
554
r91
555물론 [math(e^{i \pi}=-1)][* 오일러 등식] 같이 복잡한 계산을 생각해볼 수는 있겠지만, [math(\sin)], [math(\cos)] 등이 지원된다 하더라도 [[틀:계산기]][* 계산값 자체를 출력하는 방법이 아직까지는 발견되지 않은 상황에서, 두 수의 사칙연산을 계산하여 나오는 값을 자리 단위로 끊어 출력해주는 틀이다.]처럼 계산값을 출력하거나 판독해줘야 의미가 있으므로 그렇게까지 코딩 공사를 하자면 규모가 클 것으로 보인다.
r84
556
557== 비트 연산 테스트 ==
r67
558Zeroization. 자기 자릿수 이상으로 밀어버리면 0이 된다.
5591>>1=0 : 출력된다.
560{{{#!if 1>>1==0
561출력}}}
562----
r69
56342<2^^^6^^^=64이므로 2진법으로 6자리 숫자임을 이용.
r67
56442>>5==1 : 출력된다.
r68
565{{{#!if 42>>5==1
r67
566출력}}}
567----
56842>>5==0 : 42의 2^^^5^^^ 자릿수가 1이었으므로 출력되지 않는다.
r68
569{{{#!if 42>>5==0
r67
570출력}}}
571----
57242>>6==1 : 출력되지 않는다.
573{{{#!if 42>>6==1
574출력}}}
575----
57642>>6==0 : 출력된다.
577{{{#!if 42>>6==0
578출력}}}
579----
58042>>7==0 : 출력된다.
581{{{#!if 42>>7==0
582출력}}}
583----
r69
58442={{{#blue 101}}}010,,,(2),,,
58595={{{#blue 101}}}1111,,,(2),,,
58642>>3==5, 95>>4==5이므로 42>>3==95>>4는 출력된다.
587{{{#!if 42>>3==95>>4
588출력}}}
r78
589
r158
590== 매개변수, include, this 테스트 ==
591[include(틀:상세 내용, 설명대상=매개변수 대상, 문서명=테스트:If문법/include 대상)]
592[include(틀:상세 내용, 설명대상=매개변수 대상의 include 테스트 결과, 문서명=테스트:If문법/include 결과)]
593
594---??? : This is blasphemy! This is madness!---
595{{{#!folding - ??? : Madness? [펼치기·접기]
596[youtube(4Prc1UfuokY, start=104)]
597THIS IS SPARTA!!!}}}
598
599{{{#orange 결론 1 :}}} {{{#!wiki style="display: inline; font-family: monospace;"
600this\[{{{#orange \'}}}{{{#green 변수명}}}{{{#orange \'}}}\]}}} (작은따옴표), {{{#!wiki style="display: inline; font-family: monospace;"
601this\[{{{#orange \"}}}{{{#green 변수명}}}{{{#orange \"}}}\]}}} (큰따옴표)는 텍스트값으로 출력된다. {{{#!wiki style="display: inline; font-family: monospace;"
602this\[{{{#orange \+}}}{{{#green 변수명}}}\]}}}, {{{#!wiki style="display: inline; font-family: monospace;"
603this\[{{{#green 변수명}}}\]}}}은 올바른 입력이 아니다.
604숫자 값으로 나오게 하고 싶으면 {{{#!wiki style="display: inline; font-family: monospace;"
605{{{#orangered +}}}this\[{{{#orange \'}}}{{{#green 변수명}}}{{{#orange \'}}}\]}}} (작은따옴표), {{{#!wiki style="display: inline; font-family: monospace;"
606{{{#orangered +}}}this\[{{{#orange \"}}}{{{#green 변수명}}}{{{#orange \"}}}\]}}} (큰따옴표) 등 알맞은 양식으로 적어야 한다.
607숫자 값으로 연산할 경우 변수를 괄호로 묶어주어야 조건식에 오류가 나지 않는다.
608예 : {{{#!wiki style="display: inline; font-family: monospace;"
609{{{#purple \(}}}{{{#orangered +}}}this\[{{{#orange \'}}}{{{#green aaa}}}{{{#orange \'}}}\]{{{#purple \)}}}+{{{#purple \(}}}{{{#orangered +}}}this\[{{{#orange \'}}}{{{#green bbb}}}{{{#orange \'}}}\]{{{#purple \)}}}}}}
610
611{{{#orange 결론 2 :}}} {{{#!wiki style="display: inline; font-family: monospace;"
612this{{{#orange \.}}}{{{#green 변수명}}}}}}은 양식만 잘 맞추면 텍스트값이나 숫자값으로 출력된다.
613
614
r107
615== 문자열 검토 연산자 테스트 ==
r109
616Javascript에 지원되는 string(문자열 값) 관련 연산자(함수) 중 indexOf, startsWith, endsWith 등은 분명히 지원되며 동작이 같다. ---JSON으로 돌아가는데 Javascript가 빠질 리가 없다.---
r107
617{{{#!wiki style="display: inline; font-family: monospace;"
618{{{#green 변수명}}}{{{#orange .}}}{{{#purple 연산자}}}}}}이며, 대소문자를 구분하여야 한다.
r111
619관련 문서 : [[https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String|Mozilla MDN Web Docs, JavaScript/Reference/Global_Objects/String]]
r107
620
621 * startsWith : true, false 중 하나로 반환되며 {{{#!if "Hello, World!".startsWith("Hello")
622the seed에 지원되는 연산자이다.}}}
623 * endsWith : true, false 중 하나로 반환되며 {{{#!if "Hello, World!".endsWith("d!")
624the seed에 지원되는 연산자이다.}}}
625 * indexOf : 1부터 -1까지 (unsigned integer이거나 unsigned char이면 끝의 수인가?) 훑어보며 {{{#!if "Hello, World!".indexOf("H")==0
626지원}}}{{{#!if "Hello, World!".indexOf("e")==1
627되는 }}}{{{#!if "Hello, World!".indexOf("l")==2
628연산자}}}{{{#!if "Hello, World!".indexOf("o")==4
629이다. }}}{{{#!if "Hello, World!".indexOf(" ")==6
6300번부터 시작하는 것은 기분 탓이다.}}}
r108
631 * substr{{{#!wiki style="display: inline; display: monospace;"
r109
632({{{#teal 시작하는 문자열 index 번호}}}, {{{#teal 문자열의 길이}}})}}} : {{{#!if "조선의 궁궐에 당도한 것을 환영하오 낯선 이여".substr(8, 6)=="당도한 것을"
r114
633지원된다. ("[[https://namu.wiki/w/세종대왕(문명 5)|조선의 궁궐에 ___당도한 것을___ 환영하오 낯선 이여]]" 문자열의 제8번 index에 주어진 문자열 "당"부터 시작하여 6개만.)
r112
634{{{#!wiki style="word-break: keep-all;
r115
635||<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 ||
636||<bgcolor=#00d1b2><rowkeepall> 텍스트 || 조 || 선 || 의 || || 궁 || 궐 || 에 || ||<bgcolor=gold> 당 ||<bgcolor=gold> 도 ||<bgcolor=gold> 한 ||<bgcolor=gold> ||<bgcolor=gold> 것 ||<bgcolor=gold> 을 || || 환 || 영 || 하 || 오 || || 낯 || 선 || || 이 || 여 ||}}}}}}
r125
637 * 여기서 문자열의 길이를 0으로 해도 {{{#!if "조선의 궁궐에 당도한 것을 환영하오 낯선 이여".substr(8, 0)==""
638되지만, 빈 문자열 값으로 만들 의미가 있을까?
639{{{#!wiki style="word-break: keep-all;
640||<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 ||
641||<bgcolor=#00d1b2><rowkeepall> 텍스트 || 조 || 선 || 의 || || 궁 || 궐 || 에 || || {{{#gold 당}}} || 도 || 한 || || 것 || 을 || || 환 || 영 || 하 || 오 || || 낯 || 선 || || 이 || 여 ||}}}}}}
642
r109
643 * substring {{{#!wiki style="display: inline; display: monospace;"
644({{{#teal 내보내기 시작하는 문자열 index 번호}}}, {{{#teal 내보내{{{#orangered 지 않}}}기 시작하는 문자열 index 번호}}})}}} : {{{#!if "순순히 금을 넘기면 유혈사태는 일어나지 않을 것입니다".substring(11, 15) == "유혈사태"
r126
645지원된다. ("[[https://namu.wiki/w/패왕 간디|순순히 금을 넘기면 ___유혈사태___는 일어나지 않을 것입니다]]" 11번 ~ 15번)
646{{{#!wiki style="word-break: keep-all;
647||<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 ||
648||<bgcolor=#00d1b2><rowkeepall> 텍스트 || 순 || 순 || 히 || || 금 || 을 || || 넘 || 기 || 면 || ||<bgcolor=gold> 유 ||<bgcolor=gold> 혈 ||<bgcolor=gold> 사 ||<bgcolor=gold> 태 || 는 || || 일 || 어 || 나 || 지 || || 않 || 을 || || 것 || 입 || 니 || 다 ||}}}}}}
r127
649
r133
650 * 문자열의 유니코드 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
651이를테면 }}}{{{#!if teststring[1]==0xC2A4
r130
652"테스트"의 1번 index의 문자열 "스"의 유니코드 hex 값은 C2A4이다.
653유니코드에 따른 문자열 목록은 윈도우즈의 경우 charmap.exe를 참고할 수 있으며[* 몇 글꼴은 일부 유니코드가 나타나지 않으므로 흔하게 쓰는 글꼴로 두고 열람해야 한다.] 또한 [[https://ko.wikipedia.org/wiki/유니코드|한국어 위키백과, 유니코드]] 문서에 적어놓은 표를 참고할 수 있다.}}}
r133
654
655 {{{#!if "0"[0]==48
656{{{#!wiki style="display: inline; font-family: monospace;"
657{{{#green 변수명}}}{{{#orange [}}}{{{#teal index번호}}}{{{#orange ]}}}}}}식으로 돌아가는 모양이다.}}}
r134
658
659 {{{#!if "10"[0]>48
r135
660char를 작은 범위의 integer로 두고 계산되는지
661{{{#!wiki style="display: inline; font-family: monospace;"
662{{{#green 변수명}}}{{{#orange [}}}{{{#teal index번호}}}{{{#orange ]}}} {{{#orangered >}}} {{{#green 숫자}}}}}}[br]같은 부등식도 잘 돌아간다.}}}
r134
663
r136
664 {{{#!if "스레드"[0]>0xAAAA
r135
665유니코드의 경우도 마찬가지로
666{{{#!wiki style="display: inline; font-family: monospace;"
r136
667{{{#green 변수명}}}{{{#orange [}}}{{{#teal index번호}}}{{{#orange ]}}} {{{#orangered >}}} {{{#orange 0x}}}{{{#green XXXX(hex값)}}}}}}[br]같은 부등식}}}{{{#!if "銑"[0]>0x9290
668## 銑 : 0x9291
669을 넣어}}}{{{#!if "銑"[0]<=0x9291
670도 잘 돌아}}}{{{#!if "銒"[0]>"銑"[0]
671## 銒 : 0x9292
672간다.}}} {{{#!if "스레드"[0]<0xAAAA
r135
673틀린 식을 넣으면 나오지 않는다.}}}
r116
674== 변수값 재정의 테스트 ==
r129
675{{{#!folding 순서대로 정의되는 현상 [펼치기·접기]
r116
676var1="테스트" {{{#green var1을 정의합니다.}}}
677{{{#!if var1="테스트"
678}}}
679----
680test = (var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트") {{{#green test를 정의합니다.}}}
681{{{#!if test=(var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트")
682}}}
683----
684if test : {{{#tomato 나오지 않습니다.}}}
685{{{#!if test
686테스트}}}
687----
688var=var1 : {{{#skyblue var에 var1을 지정해주었습니다}}}
689{{{#!if var=var1
690}}}
691----
692if test : {{{#tomato 역시 나오지 않습니다.}}}
693{{{#!if test
694테스트}}}
695----
696test = (var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트") {{{#green test를 똑같은 식으로 __다시 정의__합니다. }}}
697{{{#!if test=(var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트")
698}}}
699----
700if test : {{{#gold 이제 나옵니다.}}}
701{{{#!if test
702테스트}}}
703----
704{{{#!if var=="테스트"
705var=="테스트"}}} : 검증
706----
707{{{#!if var1=="테스트"
708var1=="테스트"}}} : 검증
709----
710var1="테"+"스"+"트" :
711{{{#!if (var1.substr(0,1)=="테")&&(var1.substr(1,1)=="스")&&(var1.substr(2,1)=="트")
712테스트}}}
713----
714var="테"+"스"+"트"
715{{{#!if (var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트")
716테스트}}}
717----
718var1="[[https://namu.wiki/w/드라군 놀이|드라군]]" {{{#green var1을 다른 값으로 정의합니다.}}}
719{{{#!if var1="드라군"
720}}}
721----
722if test : {{{#tomato test값은 여전히 true로 나옵니다.}}}
723{{{#!if test
724테스트}}}
725----
726var=var1 : {{{#skyblue var에 var1을 다시해주었습니다}}}
727{{{#!if var=var1
728}}}
729----
r123
730if test : {{{#tomato 그래도 test값은 여전히 true로 나옵니다.}}}
731{{{#!if test
732테스트}}}
733----
r116
734test = (var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트") {{{#green test를 똑같은 식으로 __다시 정의__합니다. }}}
735{{{#!if test=(var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트")
736}}}
737----
738if test : {{{#gold 이제 나오지 않습니다.}}}
739{{{#!if test
740테스트}}}
741----
742test = (var.substr(0,1)=="드")&&(var.substr(1,1)=="라")&&(var.substr(2,1)=="군") {{{#green test를 __다른 식으로 정의__합니다. }}}
743{{{#!if test=(var.substr(0,1)=="드")&&(var.substr(1,1)=="라")&&(var.substr(2,1)=="군")
744}}}
745----
746if test : {{{#gold 출력됩니다.}}}
747{{{#!if test
748테스트}}}
749----
750if true&&false : 분명히 출력이 되지 않습니다.
751{{{#!if true&&false
752테스트}}}
753----
754if test&&true
755{{{#!if test&&true
756테스트}}}
757----
758var1="테스트" {{{#green var1을 원래 값(테스트)으로 정의합니다.}}}
759{{{#!if var1="테스트"
760}}}
761----
762exam=test {{{#green exam에 test를 정의합니다.}}}
763{{{#!if exam=test
764}}}
765----
766if exam : 아까 test는 식으로 저장된 것이 아니라 논리값(true or false)으로 저장되었습니다.
767{{{#!if exam
768테스트}}}
r122
769----
770test = (var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트") {{{#green test를 __원래 식으로 정의__합니다. }}}
771{{{#!if test=(var.substr(0,1)=="테")&&(var.substr(1,1)=="스")&&(var.substr(2,1)=="트")
772}}}
773----
774if test : var{{{#!if var=="드라군"
r124
775=="드라군"}}} !="테"+"스"+"트"이므로 {{{#gold 출력되지 않습니다.}}}
r122
776{{{#!if test
777테스트}}}
778----
779if exam : exam에 {{{#!if exam==true
780true로 정의된 상태}}}이므로 {{{#!if exam
781출력이 됩니다.}}}
r129
782}}}
r156
783
r124
784---변수 주작은 뭐야---
r157
785
r156
786{{{#!if this.assemble1="인장", this.assemble2="주작은", this.assemble3="뭐야", this['인장주작은뭐야']="너희들은 싹다 개추다", this['Chang-seop']=this[(assemble1+assemble2+assemble3)]
r157
787##변수1+변수2+변수3="텍스트1텍스트2텍스트3"
r156
788}}}{{{#!if this['Chang-seop']=="너희들은 싹다 개추다"
r157
789"인장 주작은 뭐야, 프 라 나"
790- "너희들은 싹다 개추다"
r161
791-- \- "[[https://starcraft.fandom.com/wiki/High_templar_(StarCraft)#Quotations|Khassar de templari.]]"--}}}
r160
792{{{#!if this.assemble1="과징금", this.assemble2="크아악", this.assemble3="X이빨", this['combination1']="과징금크아악", this['combination2']="과징금크아악X이빨", this['과징금크아악X이빨']="바로리부트정상화", this['과징금크아악']="(대충 못참겠다는 표정)"
793}}}{{{#!if this['Chang-seop']=this[combination2.substr(0,6)]
r161
794(combination2\==\"__과징금크아악__X이빨"의 일부 문자열에 해당하는 변수(combination1)의 값을 'Chang-seop' 변수의 값으로 재정의)
795}}}
796{{{#!if this['Chang-seop']=="(대충 못참겠다는 표정)"
r160
797"과징금 크아악 X이빨"}}}
798{{{#!if this[combination1+assemble3]=="바로리부트정상화"
799"바로 리부트 정상화" --[[https://namu.wiki/w/장비를 정지합니다|안 되잖아? 어 저, 정상화가 안 돼.]]--}}}
r124
800
r121
801{{{#orange 결론 : }}} 변수를 새로 정의한다면 "식"이 아니라 그 전에 정의되어 있는 변수값을 식에 대입하고 "계산한 값"을 정의하게 되므로, procedure가 아닌 이상 모종의 함수(function)를 정의해야 할 필요가 있다.
r124
802
803{{{#orange 결론2 : }}} include 문법의 괄호 안에 문서명 다음으로 뒤에 넣는 식은 변수값 정의이다.
r116
804== 다른 링크, 틀 출력 테스트 ==
r84
805||If true [[틀:토론]] include[br]{{{#!if true
806[include(틀:토론)]}}}||
807||If false [[틀:폐쇄]] include[br]
808{{{#!if false
809[include(틀:폐쇄)]}}}||
810출력이 되지 않는 틀은 역링크를 조회해보면 include로 역링크가 걸리지 않는다.
811----
812||If true [[:분류:나무마크 문법|분류:나무마크 문법]][br]{{{#!if true
813[[분류:나무마크 문법]]}}}||
814||If false [[:분류:위키]][br]{{{#!if false
815[[분류:위키]]}}}||
816출력이 되지 않는 분류로는 해당 문서가 포함되지 않는다.
817----
818||If true \#\#\@[br]{{{#!if true
r141
819##@if true (if true 사이에 고정 주석 출력 테스트)
r84
820}}}||
821||If false \#\#\@[br]{{{#!if false
r141
822##@if false (if false 사이에 고정 주석 출력 테스트)
r84
823}}}||
824\#\#\@ 테스트. If 문구 사이에 \#\#\@를 끼워넣어도 편집창 상단 표시에 출력되어 나온다.
825
826||{{{#!wiki style="display:inline;"
827\#\#\@If true
828##@{{{#!if true
r141
829##@if true (고정주석 출력 공간에 if true로 고정 주석 출력 테스트)
r84
830##@}}}
831}}}||
832||{{{#!wiki style="display:inline;"
833\#\#\@If false
834##@{{{#!if false
r141
835##@if false (고정주석 출력 공간에 if false로 고정 주석 출력 테스트)
r84
836##@}}}
837}}}||
838단, \#\#\@ 로 표시되는 공간에 If 구문이 걸리면 true일 때만 출력된다.
839----
840{{{#!if false
841이 내용은 false라서 나오지 않습니다.
842예시 :
843토론 합의 내용
844 * 문서명(표제어)을 A로 정한다. (/threadslug1 토론 합의)
845 * 문서의 B 서술을 존치한다. (/threadslug2 토론 합의)
846 * 문서의 C 서술을 삭제한다. (/threadslug3 토론 합의)
847}}}
r141
848----
r142
849변수값 정의는 고정 주석 문법을 입력하는 공간을 넘나들 수 있는가?
r141
850||{{{#!wiki style="display:inline;"
r143
851\{\{\{\#\!exhibition1 = 1 {{{#green (변수값 정의)}}}
852\#\#\@\{\{\{\#\!if exhibition1 == "1" {{{#orange (판별식)}}}
853\#\#\@\}\}\}
r142
854{{{#!if exhibition1 = 1
r144
855(exhibition1 변수값 정의.)}}}
r151
856##@{{{#!if +exhibition1 == 1
r144
857##@(exhibition1 판별식 테스트)}}}
r141
858}}}||
859||{{{#!wiki style="display:inline;"
r143
860\#\#\@\{\{\{\#\!if exhibition2 = 2 {{{#green (변수값 정의)}}}
861\#\#\@\}\}\}
862\{\{\{\#\!if exhibition2 == "2" {{{#orange (판별식)}}}
r149
863\#\#\@\{\{\{\#\!if exhibition2 == "2" {{{#orange (판별식)}}}
r141
864##@{{{#!if exhibition2 = 2
r149
865##@(exhibition2 변수값 정의 시도.)}}}
r151
866{{{#!if +exhibition2 == 2
r149
867(exhibition2 판별식 테스트)}}}}}}
r151
868##@{{{#!if +exhibition2 == 2
r150
869##@(exhibition2 변수값 테스트.)}}}
r152
870{{{#!if exhibition2 == null
871exhibition2 은 여기서 null로 나온다.}}}
r150
872||
r143
873||{{{#!wiki style="display:inline;"
874\#\#\@\{\{\{\#\!if exhibition3 == "3" {{{#orange (판별식)}}}
875\#\#\@\}\}\}
876\{\{\{\#\!if exhibition3 = 3 {{{#green (변수값 정의)}}}
r151
877##@{{{#!if +exhibition3 == 3
r144
878##@(exhibition3 판별식 테스트.)}}}
r143
879{{{#!if exhibition3 = 3
r144
880(exhibition3 변수값 정의.)}}}}}}||
r145
881||{{{#!wiki style="display:inline;"
r146
882\{\{\{\#\!exhibition4 = 4 {{{#green (변수값 정의)}}}
883\#\#\@\{\{\{\#\!if exhibition4 == {{{#red null}}} {{{#orange (판별식)}}}
r145
884\#\#\@\}\}\}
885{{{#!if exhibition4 = 4
r146
886(exhibition4 변수값 정의.)}}}
r145
887##@{{{#!if exhibition4 == null
888##@(exhibition4는 null로 나오는지 테스트)}}}
889}}}||
r146
890||{{{#!wiki style="display:inline;"
891\{\{\{\#\!exhibition5 = 5 {{{#green (변수값 정의)}}}
892\#\#\@\{\{\{\#\!if exhibition5 {{{#orangered =}}} {{{#red 2}}}, exhibition5 == "2"{{{#orange (판별식)}}}
893\#\#\@\}\}\}
r151
894{{{#!if this.exhibition5 = 5
895(exhibition5 변수값을 5로 정의.)}}}{{{#!if +exhibition5==5
8965인지 테스트.}}}
r147
897##@{{{#!if exhibition5 = 2
r151
898##@}}}{{{#!if +exhibition5 == 2
r150
899##@(exhibition5는 고정 주석 출력 공간에서 2로 정의되는지 테스트.)}}}
r151
900{{{#!if +exhibition5 != 2
901그런데 고정 주석 출력 공간 안에서 "2"로 정의해도 여기에는 '2'가 아닌지 테스트.}}}{{{#!if +exhibition5 == 2
902'2'인지 테스트.}}}{{{#!if +exhibition5 == 5
r149
903'5'인지 테스트.}}}{{{#!if exhibition5 == null
r148
904null인지 테스트.}}}
r146
905}}}||
r84
906
r146
907{{{#orange 결론1}}} : 출력되지 않는 점을 이용하면 [[\#\#주석]] 못지 않게 활용할 수 있을 듯하다.
r153
908{{{#orange 결론2}}} : 같은 문서 안에서 고정 주석을 출력하는 공간 안과 밖에서 변수는 같은 이름의 변수라 하더라도 별개의 값으로 정의된다. 안에서 정의된 값이 바깥에 영향을 주지 않고 바깥에서 정의된 값이 안에 영향을 주지 않는다.
r84
909----
910
r116
911== 기타 함수 테스트 ==
r119
912{{{#!if this.var2_1="으아니"
913}}}{{{#!if var2_1=="으아니"
914this.var2_1를 "[[https://namu.wiki/w/권진수#s-3|으아니]]"로 정의해본다.}}}
915{{{#!if this.var2_2=var2_1+var2_1
916}}}{{{#!if var2_2=="으아니으아니"
917this.var2_2=var2_1+var2_1로 정의했을 때 var2_2이 텍스트의 합도 된다.}}}
r26
918== 메모 ==
r72
919 * If 조건문에 함수를 넣을 수 있을까?
r77
920예 : dday를 넣어서 누구누구 운영자가 재직 며칠이 되었음을 적을 수 있음, pagecount를 넣어서 이 문서 개수가 몇 개를 돌파했음을 알릴 수 있음, 대문 기념일 틀을 기념일 되기 한참 전에 미리 만들어놓고 if를 걸어놓을 수 있음, 나무위키 공지 틀(고정 주석 문법)에 if를 걸어놓을 수 있음.{{{#!folding 예시 보기, 접기
r70
921{{{#orange 안내 :}}} 지원되지 않는 구문을 가상으로 적은 내용입니다.
r72
922{{{#ABCDEF \{\{\{#!if (\$\$\$dday(2025-xx-xx)\$\$\$>=-1){{{#orange &}}}(\$\$\$dday(2025-xx-xx)\$\$\$<=+1)
r74
923\[include(틀:대문/○○기념일)\][* 서버 시간과 시간대가 달라도 1일 전~1일 후 사이에는 기념일에 맞게 된다.]\}\}\}}}}{{{#00A495 \{\{\{#!if {{{#Red !(}}}(\$\$\$dday(2025-xx-xx)\$\$\$>=-1){{{#orange &}}}(\$\$\$dday(2025-xx-xx)\$\$\$<=+1){{{#Red )}}}
r73
924\}\}\}\[include(틀:대문)\][* 평상시 환영 문구. "○○위키에 오신 것을 환영합니다."]}}}}}}
r70
925-------
r74
926 * 틀의 매개변수명에 관하여
927{{{#!folding 펼치기, 접기
928{{{#orange 안내 :}}} 테스트 필요.
929 1. 매개변수에 입력하면 텍스트가 출력되거나 출력되지 않는 wiki style 구문 전부를 if 구문으로 변환한다. 가령
930 ||\#!wiki style="display:inline; display:{{{#tomato @@_@구버전 매개변수명@}}}=none"||
931 이 있으면
932 ||\#!if {{{#tomato @@_@구버전 매개변수명@}}}!=null||
933 으로 바꾼다.
934 1.#2 신버전과 나란히 입력한다.
935 예 : \{\{\{#!if ({{{#tomato 구버전 매개변수명}}}!=null)^({{{#green 신버전 매개변수명}}}!=null)
936 {{{#tomato @@_@구버전 매개변수명@}}}{{{#green @@_@신버전 매개변수명@}}}\}\}\}
937 1.#3 {{{#green 신버전 매개변수명}}}을 입력해도 틀이 동작된다.
938}}}
r72
939-------
r106
940 * elseif, else (관련 : [[https://feedback.theseed.io/posts/1576/if-munbeobe-elsewa-else-if-elif-munbeob-cuga|#]]{{{-3 ^^더시드포럼^^}}})
r100
941있으면 조금 편리하겠지만, 이렇게 적으면 되지 않을까?
942{{{#orange \{\{\{}}}\#\!if {{{#green (조건문1)}}}
943{{{#skyblue (출력할 내용1)}}}}{{{#orange \}\}\}}}}
r102
944{{{#orange \{\{\{}}}\#\!if {{{#orange \(}}}{{{#orangered \!}}}{{{#green (조건문1)}}}{{{#orange \)}}}{{{#orangered \&\&}}}{{{#green (조건문2)}}}}}}
r100
945{{{#skyblue (출력할 내용2)}}}{{{#orange \}\}\}}}}
r102
946{{{#orange \{\{\{}}}\#\!if {{{#orange \(}}}{{{#orangered \!}}}{{{#purple \(}}}{{{#green (조건문1)}}}||{{{#green (조건문2)}}}{{{#purple \)}}}{{{#orange \)}}}{{{#orangered \&\&}}}{{{#green (조건문3)}}}}}}
947{{{#skyblue (출력할 내용3)}}}{{{#orange \}\}\}}}}
948{{{#orange \{\{\{}}}\#\!if {{{#orange \(}}}{{{#orangered \!}}}{{{#purple \(}}}{{{#green (조건문1)}}}||{{{#green (조건문2)}}}||{{{#green (조건문3)}}}{{{#purple \)}}}{{{#orange \)}}}{{{#orangered \&\&}}}{{{#green (조건문4)}}}}}}
949{{{#skyblue (출력할 내용4)}}}{{{#orange \}\}\}}}}
950.....
r103
951{{{#orange \{\{\{}}}\#\!if {{{#orange \(}}}{{{#orangered \!}}}{{{#purple \(}}}{{{#green (조건문1)}}}||{{{#green (조건문2)}}}||{{{#green (조건문3)}}}|| ... ||{{{#green (조건문<math>n</math>)}}}{{{#purple \)}}}{{{#orange \)}}}{{{#orangered \&\&}}}{{{#green (조건문<math>n+1</math>)}}}
r102
952{{{#skyblue (출력할 내용<math>n+1</math>)}}}{{{#orange \}\}\}}}}
r103
953그리고 else를 만들고 싶다면
954{{{#orange \{\{\{}}}\#\!if {{{#orange \(}}}{{{#orangered \!}}}{{{#purple \(}}}{{{#green (조건문1)}}}||{{{#green (조건문2)}}}||{{{#green (조건문3)}}}|| ... ||{{{#green (조건문<math>n+1</math>)}}}{{{#purple \)}}}{{{#orange \)}}}
955{{{#skyblue (출력할 내용)}}}{{{#orange \}\}\}}}}
r106
956
r100
957-------
r72
958 * 발전 가능성
r116
959if 가 나왔으니 while, for 등 루프 연산, 그리고 더 나아가서 변수값 재지정[* 테스트 해본 결과 가능하다. 언제 업데이트 되었는지 모르겠지만.], break, continue 등 구문이 나올 수 있어 보인다. 그렇게 나오게 되면 문서는 하나의 스크립트가 될 수 있다. 루프(loop) 연산이 나오게 되면 [[2021년 the seed 엔진 위키 서버 과부하 사건|include 과부하 요청]] 같이 무한히 지속되는 연산 요청을 내지 않도록 시스템에서 의도적으로 루프를 몇 번까지만 반복할 수 있도록 제한을 걸어둘 것으로 보인다.
r63
960
r1
961== 결론 ==
r64
962||{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline; font-family:monospace;"
963\{\{\{#!if {{{#blue (논리식)}}}
r81
964{{{#green (논리식이 true이면 출력할 내용)}}}\}\}\}}}}||
r120
965||{{{#!wiki style="margin: 0 0 0 -0.25em; display: inline; font-family:monospace;"
966\{\{\{#!if {{{#blue (변수 정의(define) 식)}}}
967{{{#green (성공적으로 정의되었을 때 출력할 내용)}}}\}\}\}}}}||
r84
968||조건문에 지원되는 기능 : {{{#!wiki style="display: inline; font-family:monospace;"
969true, false, null, this}}} 등등||
r1
970|| 추정되는 문법 ||
r47
971If구문은 고장난 구문(문법)은 아니지만, ---잠수함 패치로 인해--- 변수를 연결할 수 있는 입력방법을 찾아야 한다. 조건부에 텍스트값, 정수 숫자값, 실수 숫자값, 논리값(true 또는 false)은 지원되는 입력으로 보인다. 연산할 값의 종류와 연산하여 나오는 값의 종류에 알맞은 기호만 쓴다면 원하는 설계에서 크게 벗어나지 않게 이용할 수 있다.