-
[Kotlin] 함수Kotlin 2022. 9. 14. 14:51
package days01 fun main(){ // 함수를 만드는 문법 // fun 함수이름(매개변수): 리턴값의 타입{ // 코드 입력.. // } test1() // 코틀린 함수는 main 함수 내부에서도, 외부에서도 생성이 가능 // 변수가 지역변수와 전역변수가 있듯이 함수도 그렇다는 뜻 var a1:Int=100 // 1. fun test10(){ var a1:Int=200 // 2. 함수 내부에 지역변수 생성 println("test10 호출") println("a1:$a1") // 2. 지역변수 사용 및 출력 } // 함수의 생성 test10() // 함수의 호출 println("a1:$a1") // 1. 위에 있는 var a1:Int=100 명령이 없다면 이 명령은 오류 println("---------------------------") fun test11(){ println("test11 호출") fun test13(){ println("test13 호출") } // 함수 내부에 지역함수 생성 test13() } test11() // test13() -> error // test13 함수는 test11 함수 안에 있는 지역함수이므로 외부에서 호출할 수 없음 } // 기본함수 (전달인수 없고 변환값 없는 함수) fun test1(){ println("test1 함수 호출") println("---------------------------") }
fun main(){ test2(a1: 20, a2: 12.23) // test2() 함수 호출 // 매개변수가 있는 함수를 호출할 때 // 전달인수를 넣는 동자기 하나하나 끝날 때마다 '매개변수 이름:'를 인텔리제이가 전달인수 앞에 붙여줌 // 자동으로 입력되는 사항이니 수동으로 입력하면 안됨 val k1:Int=20 val k2:Double=123.45 test2(k1,k2) // 변수가 전달인수로 전달될 때는 앞에 매개변수 이름이 붙지 않음 test2(a2=123.12, a1=300) // 다른 프로그래밍 언어도 마찬가지이지만 전달인수의 순서는 매개변수의 기수된 순서에 맞춰 넣어줌 // 다만 위와 같이 순서를 바꾸고자 한다면 '매개변수='를 써서 전달인수와 매개변수의 짝을 맞춰줌 } // 전달인수&매개변수 있는 함수 // 매개변수는 var 없이 변수이름과 자료형만 기술함 fun test2(a1:Int, a2:Double){ println("test2: 호출") println("a1:$a1") println("a2:$a2") }
fun main(){ test3(100 , 11.11) test3(200) // a2에 전달할 값이 생략되어 기본값 0.0이 a2 변수에 대입됨 test3(a2=30.123) // a1에 전달할 값을 생략하려면 매개변수 이름을 써서 전달값만 전달함 test3() // 모두 생략 가능 } // 매개변수에 기본값(default값)이 지정된 함수: 해당 매개변수에 전달되는 값이 없으면 // 기본값이 변수에 대입됨 fun test3(a1:Int=0, a2:Double=0.0){ println("test3 호출") println("a1:$a1") println("a2:$a2") }
fun main(){ val r1:Int=test4(100, 200.12) println("r1:$r1") val r2:Int=test4(1000, 2000.123) println("r2:$r2") } // 리턴(반환)값이 있는 함수 // fun 함수이름(매개변수): 리턴값의 자료형() fun test4(a1:Int, a2:Double): Int{ println("test4 호출") val result:Int=a1+a2.toInt() return result } // 변수 또는 리터럴 .toInt() -> 변수 또는 자료의 형변환(정수로 변화)
fun main(){ test5() test6() } // Unit: void의 의미로 사용되며 대부분 생략된 채로 사용됨 fun test5():Unit{ println("test5 호출") } fun test6(){ println("test6 호출") }
fun main(){ test7() test7(100) } // 함수의 오버로딩: 매개변수의 형태와 갯수를 달리한 같은 이름의 함수들을 정의하고 사용함 fun test7():Unit{ println("test7 호출 - 매개변수 없음") } fun test7(a1:Int=200){ println("test8 호출 - 매개변수 한 개(Int)") }
Ex
package days01 import java.text.DecimalFormat fun main(){ // 코틀린의 화면 입력 print("국어 점수 입력: ") val kor:Int=readLine()!!.toInt() print("영어 점수 입력: ") val eng:Int=readLine()!!.toInt() print("수학 점수 입력: ") val mat:Int=readLine()!!.toInt() // 국어 영어 수학 점수를 입력 받아서 총점 평균을 성적표 양식에 맞춰 출력 val tot:Int=sum(kor, eng, mat) val avg: Double=average(tot) prn(kor, eng, mat, tot, avg) } fun sum(kor:Int, eng:Int, mat:Int):Int{ val tot:Int=kor+eng+mat return tot } fun average(tot:Int):Double{ return tot/3.0 } fun prn(kor:Int, eng:Int, mat:Int, tot:Int, avg:Double){ val df1= DecimalFormat("#,##0.0") println("\t\t===성적표===") println("국어\t영어\t수학\t총점\t평균") println("------------------------------") print("$kor\t$eng\t$mat\t$tot\t${df1.format(avg)}\t") }
'Kotlin' 카테고리의 다른 글
[Kotlin] 조건문 if (0) 2022.09.14 [Kotlin] 연산 (0) 2022.09.14 [Kotlin] 자료형, 변수 (0) 2022.09.14 [Kotlin] 출력 (0) 2022.09.14 [Kotlin] 설치 (0) 2022.09.10