๋ฐ์ดํฐ ํ๋ก ์ ์ด
ํ์ต ๋ชฉํ
์ด ์ ๋์ ์๋ฃํ๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- ๋น๊ต ์ฐ์ฐ์์ ์ฉ๋๋ฅผ ๋์ดํฉ๋๋ค.
- Switch ๋ฌธ ๋ฐ if-else ๋ฌธ ๊ฐ์ ์ฐจ์ด์ ์ ์ดํดํฉ๋๋ค.
์ผ์์์ ๊ฒฐ์ ์ ๋ด๋ ค์ผ ํ๋ ์๊ฐ์ ์ธ์ ๋ ์ง ์ต๋๋ค. ์ท์ ์ด๋ป๊ฒ ์ ์๊น? ๋ฌด์์ ๋จน์๊น? ์ผ์ชฝ์ผ๋ก ๊ฐ์ผ ํ ๊น, ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ์ผ ํ ๊น? ์ฝ๋๋ฅผ ์์ฑํ ๋๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ ๋ 1์ 2๋จ๊ณ์์ ๋ค๋ฃจ์๋ Teatime ์์ฌ ์ฝ๋๋ฅผ ๋ค์ ์๊ฐํด ๋ณด์ธ์.
Boil water in a Tea Kettle Fill Kettle with Water Switch Kettle On Wait for Water to Boil
๋ชจ๋ ๊ฒ์ด ๊ฝค ์ ํํด ๋ณด์ ๋๋ค. ๋ฌผ์ ๋์ด๊ธฐ ์ํด ์ฃผ์ ์์ ๋ฌผ์ ์ฑ์ฐ๊ณ , ์ฃผ์ ์๋ฅผ ์ฌ๋ฆฐ ๋ค์, ๋ฌผ์ด ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ๋๋ค. ํ์ง๋ง ์ฃผ์ ์์ ์ด๋ฏธ ๋ฌผ์ด ์์๋ค๋ฉด ์ด๋จ๊น์? ์ฃผ์ ์๊ฐ ๊ฝ ์ฐฌ ์ํ๋ผ๋ฉด์? ๋ฌผ์ ์ผ๋ง๋ ์ค๋ ๋์ฌ์ผ ํ ๊น์?
ํํ์ ๋ฐ ํํ์ ์ฐ์ฐ์
์ฐ๋ฆฌ๋ ์ด๋ค ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ธฐ ์ ์ ๋น๊ต๋ฅผ ํ๊ณค ํฉ๋๋ค. ์ด๊ฒ ์ ๊ฒ๋ณด๋ค ๋ ํฐ์ง, ๋๋ฑํ์ง ๋ฑ์ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ธฐ ์ ์ ๊ฐ์ ๋น๊ตํฉ๋๋ค. ์ฝ๋์์๋ ๋ ํํ์ ์ฌ์ด์ ํํ์ ์ฐ์ฐ์๋ฅผ ๋ฐฐ์นํ์ฌ ํํ์์ ๋น๊ตํฉ๋๋ค.
ํํ์์ ๊ณ์ฐ ์ ๋จ์ผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๋ ์ฝ๋์กฐ๊ฐ์ ๋๋ค. ์ด ๋ชจ๋์ ๋ชฉ์ ์ ์ํด ํํ์์ ๋ฆฌํฐ๋ด ๊ฐ(์: 12), ๋ณ์(์: numberOfTeaCups) ๋๋ ์ํ ์ฐ์ฐ(์: 7 x 4)์ด ๋ ์ ์์ต๋๋ค.
ํํ์ ์ฐ์ฐ์๋ ๋ ๊ฐ์ด ๊ฐ์์ง ๋น๊ตํ๊ฑฐ๋ ํ์ํฉ๋๋ค. ๋น๊ต๋ฌธ์ ํํ์ ์ฐ์ฐ์๋ก ๊ตฌ๋ถ๋ ๋ ๊ฐ์ ํํ์์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ true ๋๋ false์ ๋ถ์ธ ๊ฐ์ ์์ฑํฉ๋๋ค.
๋น๊ต ์ฐ์ฐ์
Operator(์ฐ์ฐ์) |
์ค๋ช |
๊ตฌ๋ฌธ |
๊ฒฐ๊ณผ |
|---|---|---|---|
< |
๋ค์ ๊ฐ๋ณด๋ค ์์ |
1 < 2 |
TRUE |
<= |
๋ค์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ |
1 <= 2 3 <= 3 |
TRUE |
== |
๋ค์ ๊ฐ๊ณผ ๊ฐ์ |
10 == 10 |
TRUE |
|
!= <> |
๋ค์ ๊ฐ๊ณผ ๊ฐ์ง ์์ |
10 != 0 10 <> 11 |
TRUE |
> |
๋ค์ ๊ฐ๋ณด๋ค ํผ |
11 > 10 |
TRUE |
>= |
๋ค์ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ |
40 >=10 40 >= 40 |
TRUE |
๋ค์ ๊ฐ๊ณผ ๊ฐ์ ์ฐ์ฐ์์๋ ์ ๋ ๊ฐ์ ๋ฑํธ๊ฐ ์์๊น์? ๋ค์ ๋ฌธ์์ ํ๋์ ๋ฑํธ๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋ ์ฌ๋ ค ๋ณด์ธ์.


ํ๋์ ๋ฑํธ( = )๋ ํ ๋น ์ฐ์ฐ์๋ก, ๊ฐ์ ํ ๋นํฉ๋๋ค. ๋ ๊ฐ์ ๋ฑํธ( == )๋ ๋น๊ต ์ฐ์ฐ์๋ก, ๋ ๊ฐ์ ๋น๊ตํ์ฌ ๊ฐ์์ง(true) ๋๋ ๊ฐ์ง ์์์ง(false)๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
์ฐ์ฐ์๋ ์๋ ค์ง ๊ฐ์ ๋ณ์์ ๋น๊ตํ๊ฑฐ๋ ์๋ก ๋ค๋ฅธ ๋ ๋ณ์์ ๊ฐ์ ๋น๊ตํ ๋ ํนํ ์ ์ฉํฉ๋๋ค.
Integer numberOfTeaCups = 2; numberOfTeaCups == 3; //false numberOfTeaCups == 2; //true
์ ์ ๋ณ์์ ๋ฌธ์์ด ๋ณ์์ ์์๋ฅผ ๋ณด์๋๋ฐ, ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ ํ๋ ๋ถ์ธ ๋ณ์๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค. ๋ค์์ ํ์ธํด ๋ณด์ธ์.
Integer numberOfTeaCups = 2; Boolean result = numberOfTeaCups > 3; // 2 > 3 = false
์ค 1์์๋ numberOfTeaCups ๋ณ์๋ฅผ 2๋ก ์ค์ ํฉ๋๋ค.
์ค 2์์๋ result๋ผ๋ ๋ถ์ธ ์ ํ์ ๋ณ์๋ฅผ ๋ง๋ค๊ณ , numberOfTeaCups ๋ณ์ ๊ฐ์ ์ซ์ 3๊ณผ ๋น๊ตํ ๋ค์, ๋น๊ต ๊ฒฐ๊ณผ(false)๋ฅผ result ๋ณ์์ ํ ๋นํฉ๋๋ค.
๋น๊ต๋ ํน์ ํญ๋ชฉ์ด ๋ค๋ฅธ ํญ๋ชฉ๊ณผ ์ด๋ป๊ฒ ์ฐ๊ด๋๋์ง๋ฅผ ํ์ธํ๋ ๋ฐ ๋์์ด ๋์ง๋ง, ๋ฌด์๋ณด๋ค ์กฐ๊ฑด๋ฌธ ๋ด์์ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋ฐ ํฐ ๋์์ด ๋ฉ๋๋ค.
์กฐ๊ฑด๋ฌธ
๊ฐ๋ฐ์๋ ์กฐ๊ฑด๋ฌธ ๋ด์ ํํ์์ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์์ ํ๊ฐํ๊ฑฐ๋ ํ ์คํธํ ํ๋ ์ด์์ ์กฐ๊ฑด์ ์ง์ ํ๋ ์์ฌ ๊ฒฐ์ ๊ตฌ์กฐ๋ฅผ ๋ง๋ญ๋๋ค. ๋ด์ฉ์ด ๋ค์ ๋ณต์กํ๋ฏ๋ก ์ธ๋ถ์ ์ผ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์กฐ๊ฑด๋ฌธ์ ๋ ๊ฐ ์ด์์ ์ต์ ์ ์ค์ ํฉ๋๋ค. Flow Builder์์ ๊ธฐ์ค์ ๋ง๋ค์ด ๋ณธ ์ ์ด ์๋ค๋ฉด ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํด ๋ณธ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด "์ฃผ๊ฐ ์บ๋ฆฌํฌ๋์์ ๊ฐ์ ๊ฒฝ์ฐ ๋ชฉ๋ก ๋ณด๊ธฐ์ ๋ ์ฝ๋๋ฅผ ํ์ํ๋ค"๋ ์กฐ๊ฑด๋ฌธ์ ๋๋ค. "์ฃผ๊ฐ ์บ๋ฆฌํฌ๋์์ ๊ฐ๋ค"๊ฐ ์กฐ๊ฑด์ด๊ณ , "๋ชฉ๋ก ๋ณด๊ธฐ์ ๋ ์ฝ๋๋ฅผ ํ์ํ๋ค"๋ ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์ฐ์๋ง ํ๋ก๊ทธ๋จ์ด ์ํํ๋ ์์ ์ ๋๋ค. ์ด ์์์๋ ๋ ์ฝ๋ ํ์(๋ช ์) ๋ฐ ๋ ์ฝ๋ ๋นํ์(์์)์ ๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค.
If-Else ๋ฌธ
Apex์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์กฐ๊ฑด๋ฌธ์ if-else ๋ฌธ์
๋๋ค. ์ด ์กฐ๊ฑด๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
if(condition is true) {
//do this
} else {
//do this
}์ค 1์์๋ ์กฐ๊ฑด์ ๊ดํธ ์์ ์ ์ํฉ๋๋ค.
์ค 2์์๋ ์ค 1์ ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์ฐ ์คํํ ์ฝ๋๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ค 3์์๋ ๋ ๋ฒ์งธ else ์ต์ ์ ์ ์ํฉ๋๋ค.
์ค 4์์๋ ์ค 1์ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ ์คํํ ์ฝ๋๋ฅผ ์ ๋ ฅํฉ๋๋ค.
Apex์์๋ ์กฐ๊ฑด๋ฌธ์ ์ค๊ดํธ({ })์ ํฌํจํฉ๋๋ค. ๊ฐ ์ฌ๋ ์ค๊ดํธ({)๋ ๋ซ๋ ์ค๊ดํธ(})์ ํจ๊ป ์ฌ์ฉ๋์ด์ผ ํฉ๋๋ค. ์ฝ๋ ๋ธ๋ก์ ์ฌ๋ ์ค๊ดํธ๋ง ์๊ณ ๋ซ๋ ์ค๊ดํธ๊ฐ ์์ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Teatime ์์ฌ ์ฝ๋์์ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ์ฌ ์ฐป์ฃผ์ ์์ ๋ฌผ ๋์ด๋ฅผ ํ์ธํ๊ณ ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์์ ์ํํ ์์ ์ ํ๋จํด ๋ณด๊ฒ ์ต๋๋ค.
- Developer Console์์ Debug(๋๋ฒ๊ทธ) | Open Execute Anonymous Window(์ต๋ช
์คํ ์ฐฝ ์ด๊ธฐ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ Enter Apex Code(Apex ์ฝ๋ ์
๋ ฅ) ์ฐฝ์ ๋ถ์ฌ ๋ฃ์ต๋๋ค.
String waterLevel = 'full'; /*This variable keeps track of the water level status: full or empty*/ if(waterLevel == 'empty') { System.debug('Fill the tea kettle'); waterLevel = 'full'; /*Once the tea kettle is filled the variable is changed to full*/ } else { System.debug('The tea kettle is full'); } -
Open log(๋ก๊ทธ ์ด๊ธฐ) ํ์ธ๋์ ์ ํํ๊ณ Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Execution Log(์คํ ๋ก๊ทธ)๊ฐ ์ด๋ฆฌ๋ฉฐ ์ฝ๋ ์คํ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
- ์ฐฝ ์๋์ ์๋ Debug Only(๋๋ฒ๊ทธ๋ง) ํ์ธ๋์ ์ ํํฉ๋๋ค.
์ค 1์์๋ waterLevel ๋ณ์๋ฅผ full๋ก ์ด๊ธฐํํ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋์ ๋ณ์ ๊ฐ์ ์ฝ๋ ์์ฒด์์ ์ง์ ๋์ง ์๊ณ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ๊ฑฐ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ์์ ํ์๋ฉ๋๋ค. Teatime ์์์์๋ ์ฃผ์ ์์ ์ผ์์์ ๋ฌผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๋ฌผ ๋์ด๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ, ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ์คํํ๊ณ ํ
์คํธํ ์ ์๋๋ก ์ฝ๋์์ ์ง์ (์์๋ก) ๊ฐ์ ์ค์ ํฉ๋๋ค. ์ด๋ ๊ฒ ์ฝ๋์ ๊ฐ์ ์ค์ ํ๋ ๊ฒ์ ํ๋ ์ฝ๋ฉ์ด๋ผ๊ณ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํ
์คํธ ๋ชฉ์ ์ผ๋ก waterLevel ๋ณ์ ๊ฐ์ full๋ก ํ๋ ์ฝ๋ฉํ์ต๋๋ค. ๊ฐ์ด ์ด๋ฏธ ์ค์ ๋์์ผ๋ฏ๋ก ์ฒซ if ๋ฌธ(์ค 3)์ ์คํ๋์ง ์์ต๋๋ค. waterLevel์ด empty์์ ์์ํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ฝ๋์์๋ waterLevel ๋ณ์๊ฐ empty์ ๋์ผํ์ง ํ์ธํฉ๋๋ค. waterLevel์ full๋ก ํ๋์ฝ๋ฉํ๊ธฐ ๋๋ฌธ์ if ๋ฌธ ์กฐ๊ฑด์ false์
๋๋ค. if ์กฐ๊ฑด์ด false์ธ ๊ฒฝ์ฐ else ์ฝ๋ ๋ธ๋ก์ด ์คํ๋ฉ๋๋ค.
ํ์ฌ ์ฝ๋๋ ๋ ๊ฐ์ ์ต์
์ผ๋ก ๋ฌผ ๋์ด๊ฐ full์ธ ๊ฒฝ์ฐ์ ๋ฌผ ๋์ด๊ฐ empty์ธ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ํ์ง๋ง ์ด๋ฌํ ์ต์
์ ๋จ์ง ๊ฐ๋ฅ์ฑ์ผ ๋ฟ์ด๋ฉฐ, ์ฃผ์ ์๊ฐ ์ด๋ ์ ๋๋ง ์ฑ์์ ธ ์์ ์๋ ์์ต๋๋ค. 3๊ฐ ์ด์์ ๊ฐ๋ฅ์ฑ์ ์ฒ๋ฆฌํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
If-Else If ๋ฌธ
3๊ฐ ์ด์์ ๊ฐ๋ฅ์ฑ์ ์ฒ๋ฆฌํ๋ ค๋ฉด if-else if ๋ฌธ์ ์ฌ์ฉํด ๋ณผ ์ ์์ต๋๋ค. if-else if ๋ฌธ์ ๋ง์ง๋ง else ์กฐ๊ฑด ์์ ๋ ๋ค๋ฅธ if ์กฐ๊ฑด์ ์ถ๊ฐํฉ๋๋ค. ์ค์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- Developer Console์์ Debug(๋๋ฒ๊ทธ) | Open Execute Anonymous Window(์ต๋ช
์คํ ์ฐฝ ์ด๊ธฐ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ Enter Apex Code(Apex ์ฝ๋ ์
๋ ฅ) ์ฐฝ์ ๋ถ์ฌ ๋ฃ์ต๋๋ค.
String waterLevel = 'half'; if(waterLevel == 'empty') { System.debug('Fill the tea kettle'); waterLevel = 'full'; } else if(waterLevel == 'half') { System.debug('Fill the tea kettle'); waterLevel = 'full'; } else { /*This statement only runs if line 3 and line 6 result in false.*/ System.debug('The tea kettle is full'); } -
Open log(๋ก๊ทธ ์ด๊ธฐ) ํ์ธ๋์ ์ ํํ๊ณ Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Execution Log(์คํ ๋ก๊ทธ)๊ฐ ์ด๋ฆฌ๋ฉฐ ์ฝ๋ ์คํ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
- ์ฐฝ ์๋์ ์๋ Debug Only(๋๋ฒ๊ทธ๋ง) ํ์ธ๋์ ์ ํํฉ๋๋ค.
์ฝ๋๋ฅผ ํ
์คํธํ ๋ ์ค 1์ ์๋ waterLevel ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํฉ๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ๋๋ฒ๊ทธ ๋ก๊ทธ์ ์ถ๋ ฅ์ ๋ฐ์๋ฉ๋๋ค. half, full, empty์ ์ธ ๊ฐ์ง ๊ฐ์ ๋ชจ๋ ์ฌ์ฉํด ๋ณด์ธ์.
์ฒซ ๋ฒ์งธ ์กฐ๊ฑด์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์กฐ๊ฑด์ด ๋๋๋ก ์กฐ๊ฑด๋ฌธ์ ์ ๋ ฌํ์ธ์. ์ด๋ ๊ฒ ์ ๋ ฌํ๋ฉด ์ฝ๋ ๋ธ๋ก์ด ์คํ๋ ๋๋ง๋ค ์คํ๋๋ ์ฝ๋์ ์์ ์ค์ผ ์ ์์ต๋๋ค. Teatime ์์์์ ์ฃผ์ ์๋ ๋น์ด ์์ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ฅ ๋์ผ๋ฏ๋ก ํด๋น ์กฐ๊ฑด์ ๋จผ์ ์ค์ ํฉ๋๋ค. ์ฐป์ฃผ์ ์๊ฐ ๊ฐ๋ ์ฐจ ์์ ๊ฐ๋ฅ์ฑ์ ๋ฎ์ผ๋ฏ๋ก ๋ง์ง๋ง์ผ๋ก ํด๋น ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
Switch ๋ฌธ
if-else ๋ฌธ์ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๋์์ switch ๋ฌธ์ ๋๋ค. switch ๋ฌธ์ ๊ฐ ์งํฉ์ ์ง์ ํ๊ณ ํํ์์ ํ ์คํธํ์ฌ ํด๋น ๊ฐ ์ค ํ๋์ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค. ์ด ์กฐ๊ฑด๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
switch on expression {
when value1 {
//code block 1
}
when value2 {
//code block 2
}
when else { //if none of the previous values apply
//code block 3
}
}switch ๋ฌธ์์ when ์์ฝ์ด ๋ค์ ํ๋ ์ด์์ ๊ฐ์ ๋ฐฐ์นํ ์ ์์ต๋๋ค.
switch on expression {
when value1 { //single value
//code block 1
}
when value2, value3 { //multiple values
//code block 2
}
}Teatime ์์ฌ ์ฝ๋์ switch ๋ฌธ์ ์ ์ฉํด ๋ณด๊ฒ ์ต๋๋ค.
- Developer Console์์ Debug(๋๋ฒ๊ทธ) | Open Execute Anonymous Window(์ต๋ช
์คํ ์ฐฝ ์ด๊ธฐ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ Enter Apex Code(Apex ์ฝ๋ ์
๋ ฅ) ์ฐฝ์ ๋ถ์ฌ ๋ฃ์ต๋๋ค.
String waterLevel = 'empty'; //option 1 using a single value switch on waterLevel { when 'empty' { System.debug('Fill the tea kettle'); } when 'half' { System.debug('Fill the tea kettle'); } when 'full' { System.debug('The tea kettle is full'); } when else { System.debug('Error!'); } } //option 2 using multiple values switch on waterLevel { when 'empty', 'half' { //when waterLevel is either empty or half System.debug('Fill the tea kettle'); } when 'full' { System.debug('The tea kettle is full'); } when else { System.debug('Error!'); } } -
Open log(๋ก๊ทธ ์ด๊ธฐ) ํ์ธ๋์ ์ ํํ๊ณ Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Execution Log(์คํ ๋ก๊ทธ)๊ฐ ์ด๋ฆฌ๋ฉฐ ์ฝ๋ ์คํ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
- ์ฐฝ ์๋์ ์๋ Debug Only(๋๋ฒ๊ทธ๋ง) ํ์ธ๋์ ์ ํํฉ๋๋ค.
๋ ผ๋ฆฌ ์ฐ์ฐ์
๋ ๊ฐ ์ด์์ ์กฐ๊ฑด์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ์์๋ณด์์ต๋๋ค. ์ด์ ๋จ์ผ ์กฐ๊ฑด์ด ๋ ์ด์์ ๊ฐ์ผ๋ก ์ถฉ์กฑ๋ ์ ์๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
๋ ผ๋ฆฌ ์ฐ์ฐ์
Operator(์ฐ์ฐ์) |
OR |
AND |
|---|---|---|
์ฐ์ฐ ๊ธฐํธ |
|| |
&& |
์์ฌ ์ฝ๋ |
If X or Y, do this. Otherwise, do that. |
If X and Y, do this. Otherwise, do that. |
Apex ์ฝ๋ |
if(X || Y) {
//do this
} else {
//do this
} |
if(X && Y) {
//do this
} else {
//do this
} |
๋
ผ๋ฆฌ ์ฐ์ฐ์ and ๋ฐ or๋ฅผ ์ฌ์ฉํ๋ฉด ์กฐ๊ฑด์ด ์ฐธ์ธ์ง ๊ฑฐ์ง์ธ์ง๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ๋ ์ด์์ ๊ฐ์ ํ์ธํ๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. and ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์กฐ๊ฑด์ ์ถฉ์กฑํ๊ธฐ ์ํด ๋ชจ๋ ๊ฐ์ด ์ฐธ์ด์ด์ผ ํฉ๋๋ค. or ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์กฐ๊ฑด์ ์ถฉ์กฑํ๊ธฐ ์ํด ์ต์ ํ๋ ์ด์์ ๊ฐ์ด ์ฐธ์ด์ด์ผ ํฉ๋๋ค.
๋ ผ๋ฆฌ ์ฐ์ฐ์ ํ๊ฐ
๋ ผ๋ฆฌ ์ฐ์ฐ์ |
๊ตฌ๋ฌธ |
์ค๋ช |
|---|---|---|
&& (AND) |
X && Y System.debug(true && true); // true System.debug(false && true); //false System.debug(true && false); // false System.debug(false && false); //false |
X ๋ฐ Y๋ ๋ถ์ธ ๊ฐ์ ๋๋ค. X ๋ฐ Y๊ฐ ๋ชจ๋ ์ฐธ์ด๋ผ๋ฉด ํํ์๋ ์ฐธ์ ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ํํ์์ ๊ฑฐ์ง์ ๋๋ค. |
|| (OR) |
X || Y System.debug(true || true); //true System.debug(false || true); //true System.debug(true || false); //true System.debug(false || false); //false |
X ๋ฐ Y๋ ๋ถ์ธ ๊ฐ์ ๋๋ค. X ๋ฐ Y๊ฐ ๋ชจ๋ ๊ฑฐ์ง์ด๋ผ๋ฉด ํํ์๋ ๊ฑฐ์ง์ ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ํํ์์ ์ฐธ์ ๋๋ค. |
๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค์์ if-else if ๋ฌธ์ผ๋ก ์์ฑ๋ ์ฝ๋์ ๋๋ค.
String waterLevel = 'half';
if(waterLevel == 'empty') {
System.debug('Fill the tea kettle');
waterLevel = 'full';
} else if(waterLevel == 'half') {
System.debug('Fill the tea kettle');
waterLevel = 'full';
} else { //This statement only runs if line 3 and line 6 result in false.
System.debug('The tea kettle is full');
}์ค 4~5์ ์ค 7~8์ ๋ณด๋ฉด ๋์ผํฉ๋๋ค. ์ด๋ฅผ ์ค๋ณต ์ฝ๋๋ผ๊ณ ํฉ๋๋ค. ์ด์คํ๋ฅผ ์ ๊ฑฐํ๋ฉด ์ฝ๋๊ฐ ๋ ์ฝ๊ธฐ ์ฌ์์ง๋ฉฐ ์ดํด, ๋๋ฒ๊ทธ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ ์ฌ์์ง๋ฏ๋ก ์ด๋ ๋ชจ๋ฒ ์ฌ๋ก์
๋๋ค. ์ฝ๋๋ waterLevel์ด empty๋ half์ด๋ ๊ด๊ณ์์ด ๋์ผํ ์์
์ ์ํํฉ๋๋ค. empty ๋ฐ half๋ฅผ ํ๋์ ์กฐ๊ฑด์ ํจ๊ป ์ฌ์ฉํ์ฌ ์ด ์ฝ๋๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค. or ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ empty ๋๋ half ๊ฐ์ด ์ฐธ์ผ ๊ฒฝ์ฐ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋๋ก ํ ์ ์์ต๋๋ค.
- Developer Console์์ Debug(๋๋ฒ๊ทธ) | Open Execute Anonymous Window(์ต๋ช
์คํ ์ฐฝ ์ด๊ธฐ)๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ Enter Apex Code(Apex ์ฝ๋ ์
๋ ฅ) ์ฐฝ์ ๋ถ์ฌ ๋ฃ์ต๋๋ค.
String waterLevel = 'half'; if(waterLevel == 'empty' || waterLevel == 'half') { System.debug('Fill the tea kettle'); waterLevel = 'full'; } else { //This statement only runs if line 3 false. System.debug('The tea kettle is full'); } -
Open log(๋ก๊ทธ ์ด๊ธฐ) ํ์ธ๋์ ์ ํํ๊ณ Execute(์คํ)๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Execution Log(์คํ ๋ก๊ทธ)๊ฐ ์ด๋ฆฌ๋ฉฐ ์ฝ๋ ์คํ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
- ์ฐฝ ์๋์ ์๋ Debug Only(๋๋ฒ๊ทธ๋ง) ํ์ธ๋์ ์ ํํฉ๋๋ค.
ํ๋ฒ ๋ณด์ธ์. ์ฝ๋์ ์ด์คํ๋ฅผ ์ ๊ฑฐํ์ต๋๋ค. ๋
ผ๋ฆฌ ์ฐ์ฐ์(&& ๋ฐ ||)๋ฅผ ์ฌ์ฉํ๋ฉด ํจ๊ณผ์ ์ผ๋ก ์ฝ๋์ ์ด์คํ๋ฅผ ์์ ๊ณ ๊ฐ๋
์ฑ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ๋ง๋ค๊ธฐ
ํ๋ก๊ทธ๋๋ฐ์์๋ ํน์ ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง ์ด์์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค์ด switch ๋ฌธ ๋๋ if-else ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ฌ์ฉํ ๋ฌธ์ ์ ํ์ ์ ํํ ๋ ๊ณ ๋ คํด์ผ ํ ์ค์ํ ์ฌํญ์ ๊ฐ ๋ฌธ์ด ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋ฏธ์น๋ ์ํฅ์ ๋๋ค. ์ฝ๋ ์์ ์ ๊ณ์ํ๋ค ๋ณด๋ฉด ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ๋ ๋ง์ด ๋ฐฐ์ธ ์ ์์ต๋๋ค. ์ง๊ธ์ ์ฝ๋๋ฅผ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๋ฐ ์ง์คํ์ธ์.
๋ฆฌ์์ค
- Apex ๊ฐ๋ฐ์ ๊ฐ์ด๋: ํํ์ ์ฐ์ฐ์
- Apex ๊ฐ๋ฐ์ ๊ฐ์ด๋: Switch ๋ฌธ
- GeeksforGeeks: switch์ if else ๋น๊ต