728x90
overloading
- ๊ฐ์ ์ค์ฝํ ์์์ ๊ฐ์ ์ด๋ฆ์ ํจ์๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ค ์ ์๋ ๊ธฐ๋ฅ์ด๋ค.
- ํจ์ ์ด๋ฆ์ด ๊ฐ์๋ ํ๋ผ๋ฏธํฐ์ ์๋ฃํ์ด ๋ค๋ฅด๊ฑฐ๋ ํ๋ผ๋ฏธํฐ์ ๊ฐฏ์๊ฐ ๋ค๋ฅด๋ค๋ฉด ์๋ก ๋ค๋ฅธ ํจ์๋ก ๋์ํ ์ ์๋ค.
fun hello(x: Int)
fun hello(x: Int, text: String)
fun hello(x: Int, y: Int)
ํ์ง๋ง ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ๋ง ๋ค๋ฅด๊ณ ์๋ฃํ์ด ๊ฐ๋ค๋ฉด ์ค๋ฒ๋ก๋ฉ์ ํ ์ ์๋ค.
fun hello(x: Int, y: Int)
fun hello(a: Int, b: Int)
์์
fun main(){
read(24)
read("ํ๊ธธ๋")
}
fun read(x: Int){
println("์ซ์ $x ์
๋๋ค")
}
fun read(x: String){
println("๋ฌธ์ $x ์
๋๋ค")
}
์ถ๋ ฅ
์ซ์ 24 ์
๋๋ค
๋ฌธ์ ํ๊ธธ๋ ์
๋๋ค
default arguments
- ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์ผ ํ๋ ํจ์์ด์ง๋ง ๋ณ๋ค๋ฅธ ํ๋ผ๋ฏธํฐ๊ฐ ์๋๋ผ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์ํด์ผ ํ ๋ ์ฌ์ฉํ๋ค.
์์
fun main(){
deliveryItem("์งฌ๋ฝ")
deliveryItem("์ฑ
", 3)
deliveryItem("๋
ธํธ๋ถ", 30,"ํ์ฌ")
}
fun deliveryItem(name: String, count: Int = 100, destination: String = "์ง"){
println("${name} ${count}๊ฐ๋ฅผ ${destination}์ ๋ฐฐ๋ฌ ์๋ฃํ์์ต๋๋ค.")
}
์ถ๋ ฅ
์งฌ๋ฝ 100๊ฐ๋ฅผ ์ง์ ๋ฐฐ๋ฌ ์๋ฃํ์์ต๋๋ค.
์ฑ
3๊ฐ๋ฅผ ์ง์ ๋ฐฐ๋ฌ ์๋ฃํ์์ต๋๋ค.
๋
ธํธ๋ถ 30๊ฐ๋ฅผ ํ์ฌ์ ๋ฐฐ๋ฌ ์๋ฃํ์์ต๋๋ค.
- ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ๊ฒฝ์ฐ์๋ ์ ๋ ฅ๋ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ ์ถ๋ ฅํ์ง๋ง
- ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ง ์์ ๊ฒฝ์ฐ์๋ ์ง์ ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ถ๋ ฅ๋๋ค.
named arguments
- ๋ฐ๋ก ์์ default arguments ์์ ์์ ์ด๋ฆ๊ณผ ๋ชฉ์ ์ง๋ง ๋ฃ๊ณ , ๊ฐ์๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ฃ์ด ์๋ตํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ named arguments๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
- ํ๋ผ๋ฏธํฐ์ ์์์ ๊ด๊ณ์์ด ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ง์ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ํ ๋นํ๋ ๊ธฐ๋ฅ์ด๋ค.
์์
fun main(){
// default arguments
deliveryItem("์งฌ๋ฝ")
deliveryItem("์ฑ
", 3)
deliveryItem("๋
ธํธ๋ถ", 30,"ํ์ฌ")
// named arguments
deliveryItem("์ ๋ฌผ",destination = "์น๊ตฌ์ง")
}
fun deliveryItem(name: String, count: Int = 100, destination: String = "์ง"){
println("${name} ${count}๊ฐ๋ฅผ ${destination}์ ๋ฐฐ๋ฌ ์๋ฃํ์์ต๋๋ค.")
}
์ถ๋ ฅ
์งฌ๋ฝ 100๊ฐ๋ฅผ ์ง์ ๋ฐฐ๋ฌ ์๋ฃํ์์ต๋๋ค.
์ฑ
3๊ฐ๋ฅผ ์ง์ ๋ฐฐ๋ฌ ์๋ฃํ์์ต๋๋ค.
๋
ธํธ๋ถ 30๊ฐ๋ฅผ ํ์ฌ์ ๋ฐฐ๋ฌ ์๋ฃํ์์ต๋๋ค.
์ ๋ฌผ 100๊ฐ๋ฅผ ์น๊ตฌ์ง์ ๋ฐฐ๋ฌ ์๋ฃํ์์ต๋๋ค.
- ์ค๊ฐ์ ์๋ ๊ฐ์๋ ๊ธฐ๋ณธ๊ฐ์ธ 100์ผ๋ก ์ถ๋ ฅ๋๊ณ ๋๋จธ์ง ๋ ํ๋ผ๋ฏธํฐ๋ง ํ ๋น๋์ด ์คํ๋๋ค.
variable number of arguments(vararg)
- ๊ฐ์ ์๋ฃํ์ ๊ฐ์์ ์๊ด์์ด ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
- ๊ฐ์๊ฐ ์ง์ ๋์ง ์์๋ค๋ ํน์ง์ด ์์ผ๋ฏ๋ก ๋ค๋ฅธ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ด ์ธ๋๋ ๋ฐ๋์ ๋งจ ๋ง์ง๋ง์ ์์นํด์ผ ํ๋ค.
fun hello(text: String, vararg x: Int)
์์
fun main(){
sum(1, 2, 3, 4)
}
fun sum(vararg numbers: Int){
var sum = 0
for(n in numbers){
sum += n
}
print(sum)
}
์ถ๋ ฅ
10
- vararg๊ฐ ๋ถ์ ํ๋ผ๋ฏธํฐ๋ ๋ง์น ๋ฐฐ์ด์ฒ๋ผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ฐธ์กฐํ ์ ์๋ค.
infix function
- ์ฐ์ฐ์์ฒ๋ผ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ํด๋์ค ์์์ infix ํจ์๋ฅผ ์ ์ธํ ๋์๋ ์ ์ฉํ ํด๋์ค๊ฐ ์๊ธฐ ์์ ์ด๋ฏ๋ก ํด๋์ค์ ์ด๋ฆ์ ์ฐ์ง ์๋๋ค.
์์
fun main(){
println(6 multiply 4)
}
infix fun Int.multiply(x: Int): Int = this * x
์ถ๋ ฅ
24
- ํจ์๋ฅผ ์ ์ํ ๋ ์์ infx๋ฅผ ๋ถ์ธ ํ ํจ์ ์ด๋ฆ์ infix ํจ์๊ฐ ์ ์ฉ๋ "์๋ฃํ.์ด๋ฆ"์ผ๋ก ์ง์ ํ๋ค.
- ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํ์ผ๋ก ๋ฐ๊ณ ๋ฐํ๊ฐ๋ ์ ์ํ์ผ๋ก ๋ฐํํ๋ค.
- this์ x๋ฅผ ๊ณฑํด์ ๋ฐํํ๋ค.
- ๋ฉ์ธ ํจ์์์ multiply ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ผ์ชฝ์ ์๋ 6์ด infix ํจ์๊ฐ ์ ์ฉ๋๋ ๊ฐ์ฒด ์์ (this)์ ํด๋น๋๋ค.
- ์ผ์ชฝ์ ์๋ 4๊ฐ ํ๋ผ๋ฏธํฐ(x)์ ํด๋น๋๋ค.
fun main(){
println(6.multiply(4))
}
infix fun Int.multiply(x: Int): Int = this * x
์ถ๋ ฅ
24
- ์ผ๋ฐ์ ์ธ ํด๋์ค์ ํจ์์ฒ๋ผ ์ฌ์ฉํ ์๋ ์๋ค.
๐ก์ฝํ๋ฆฐ์ ๋ง์ ์ธ์ด๋ค์ด ์ง์ํ๋ ํจ์์ ๋ค์ํ ํธ์ ๊ธฐ๋ฅ์ ๊ฑฐ์ ๋๋ถ๋ถ ๊ฐ์ง๊ณ ์๋ค.
๐ก์ด๋ฅผ ์ด์ฉํ๋ฉด ๋ ํธ๋ฆฌํ ์ฝ๋ฉ์ด ๊ฐ๋ฅํ๋ค.
728x90
'์๋๋ก์ด๋๐ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝํ๋ฆฐ] Data Class & Enum Class (1) | 2024.07.08 |
---|---|
[์ฝํ๋ฆฐ] ์ค์ฒฉ ํด๋์ค์ ๋ด๋ถ ํด๋์ค (0) | 2024.07.07 |
[์ฝํ๋ฆฐ] null ์ฒดํฌ & ๋ณ์ ๋์ผ์ฑ ์ฒดํฌ (0) | 2024.07.03 |
[์ฝํ๋ฆฐ] ๋ฌธ์์ด์ ๋ค๋ฃจ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ (0) | 2024.07.02 |
[์ฝํ๋ฆฐ] ์ ๋๋ฆญ (0) | 2024.07.02 |