이번 학기에 GDSC에서 진행하는 안드로이드 스터디를 들어가게 되었다! 안드로이드를 해본 적은 있지만 제대로 공부를 하고 사용했던 게 아니라서 이번 기회에 Kotlin과 안드로이드를 기초부터 꼼꼼히 배워보려고 한다! 😤 (블로그도 하나씩 채워나가기!)
스터디는 Google Developers에서 제공하는 Android Basics in Kotlin 강의에 맞춰 진행된다.
다음과 같은 코드를 살펴보자
fun main() {
println("Happy Birthday!")
}
fun
은 함수를 의미하며, 함수란 특정 작업을 실행하는 프로그램의 섹션을 말한다.
main
은 함수의 이름이다. 모든 Kotlin 프로그램에는 main 함수가 필요하다.
함수 이름 뒤에는 항상 괄호 ()
가 온다. 괄호 안에는 함수에서 사용할 정보 즉 인수 args
를 넣을 수 있다.
()
괄호 뒤에는 중괄호 {}
가 온다. 중괄호는 작업을 실행하는 코드를 둘러싸고 있다.
println()
은 텍스트를 출력한다. 텍스트를 실제로 출력하려면 main 함수 내에 있어야 한다.
출력할 텍스트는 큰따옴표 사이에 입력한다. 예: "Hello"
fun createMessage(name: String, location: String, age: Int) {
println("My name is ${name}. I am from ${location}, and I am ${age} years old.")
}
위 코드처럼 인수를 받아서 ${변수명}
으로 출력할 수 있다.
val age = 5
val
은 Kotlin에서 사용하는 특수 단어로, 키워드라고 한다.
val
키워드를 사용해 선언된 변수는 한 번만 설정할 수 있다. 값을 변경할 수 없다.
val
로 변수를 선언한 뒤에 age = 10
을 아래에 입력해 실행하면 에러가 난다. 😮
println("You are already ${age}!")
${variable}
형식으로 변수를 출력문에서 사용할 수 있다.
fun main() {
printBorder()
println("Happy Birthday!")
printBorder()
}
fun printBorder() {
println("=======================")
}
반복되는 출력문을 printBorder()
라는 함수로 만들어 함수를 호출한다. 코드의 결과는 그대로지만 더 효율적으로 또는 더 쉽게 작업할 수 있도록 코드를 변경하는 것을 리팩토링
이라고 한다.
함수의 이름은 주로 소문자와 동사로 시작하고 두 번째 단어부터 첫 글자를 대문자로 쓴다. 이러한 스타일을 카멜 표기법
이라고 한다.
fun printBorder() {
repeat(23) {
print("=")
}
}
repeat()
문을 이용할 수 있다. repeat
는 내부적으로 for문을 사용하는 inline 함수로 인덱스가 필요없는 반복문을 만들 때 유용하다.
fun printBorder(border: String, timesToRepeat: Int) {
repeat(timesToRepeat) {
print(border)
}
println()
}
fun main() {
val border = "╰(*°▽°*)╯"
val timesToRepeat = 4
printBorder(border, timesToRepeat)
println(" Happy Birthday!")
printBorder(border, timesToRepeat)
}
원하는 기호를 원하는 횟수만큼 출력하기 위해 함수를 위와 같이 수정할 수 있다. 인수의 이름은 border
, 인수 뒤에 :
이 오고, 그 다음에는 인수의 타입을 설명하는 String
이 온다.
❗ 주의 Int
String
모두 대문자다. 다른 언어랑 헷갈리지 말자.
fun printCakeCandles(age: Int){
print(" ")
repeat(age){
print(",")
}
print("\n ")
repeat(age){
print("|")
}
println()
}
fun printCakeTop(age: Int){
repeat(age+2){
print("=")
}
println()
}
fun printCakeBottom(age: Int, layers:Int){
repeat(layers){
repeat(age+2){
print("@")
}
println()
}
}
fun main() {
val age = 24
val layers = 5
printCakeCandles(age)
printCakeTop(age)
printCakeBottom(age, layers)
}