자바와 c++과 유사하나 표현방식에 차이가 있어서 예시들을 통해 복습을 해보고자 한다.
우선 선언방식에 크게 2가지가 있다.
- 일반적 선언
fun a(a:Int, b:Int):Int {
return a + b
}
- 간략한 선언
fun a(a: Int, b: Int): Int = a+b
//또는
fun sum(a: Int, b:Int) = a+b
두개의 숫자를 입력받아서 덧셈, 뺄셈, 곱셉을 함수를 통해 출력하시오.
- xml 코드
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="두 개의 숫자를 적어주세요"
android:textSize="34sp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/num1"
android:textColor="@color/purple_200"
android:layout_marginTop="20dp"
android:textSize="34sp"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/num2"
android:textColor="@color/purple_200"
android:layout_marginTop="20dp"
android:textSize="34sp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id = "@+id/calButton"
android:text = "입력"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/plus"
android:visibility="invisible"
android:textColor="@color/purple_200"
android:layout_marginTop="20dp"
android:textSize="34sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/multiply"
android:visibility="invisible"
android:textColor="@color/purple_200"
android:layout_marginTop="20dp"
android:textSize="34sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="invisible"
android:id="@+id/divide"
android:textColor="@color/purple_200"
android:layout_marginTop="20dp"
android:textSize="34sp"/>
</LinearLayout>
- 코틀린 코드
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.activity.ComponentActivity
class CalActivity : ComponentActivity() {
lateinit var number1: EditText //사용자로부터 첫번째 숫자를 입력 받음
lateinit var number2: EditText //사용자로부터 첫번째 숫자를 입력 받음
lateinit var button: Button // 버튼을 누르면 결과를 볼 수 있음.
lateinit var plus: TextView // 더하는 값 보여주는 텍스트 뷰
lateinit var divide: TextView // 나눈 값 보여주는 텍스트뷰
lateinit var multiply: TextView // 곱한 값 보여주는 텍스트뷰
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.cal)
val number1 = findViewById<EditText>(R.id.num1)
val number2 = findViewById<EditText>(R.id.num2)
val button = findViewById<Button>(R.id.calButton)
val plus = findViewById<TextView>(R.id.plus)
val divide = findViewById<TextView>(R.id.divide)
val multiply = findViewById<TextView>(R.id.multiply)
button.setOnClickListener {
val num1 = number1.text.toString().toFloatOrNull() ?: null //사용자가 입력한 숫자를 받는 코드
val num2 = number2.text.toString().toFloatOrNull() ?: null
if (num1 != null && num2 != null) {
plus.text = "${num1 + num2}"
//plus.visibility 실수가 있었음! 여기에 뷰를 보일 수 있도록 설정이 필요함!
plus.visibility = View.VISIBLE
multiply.text = "${num1 * num2}"
multiply.visibility = View.VISIBLE
divide.text = "${num1 / num2}"
divide.visibility = View.VISIBLE
}
}
}
}
순수함수 : 부작용이 없는 함수. 동일 입력 인자에 대해서는 항상 같은 결과를 출력 또는 반환을 함. 값을 예측 가능
fun num(a: Int, b: Int): Int{
return a + b
}
람다식
익명함수의 형태로 이름 없이 사용 및 실행이 가능
"변수를 함수처럼 사용 가능"
fun main(){
var a: Int
var b = {x: Int, y: Int -> x * y} //일반 변수에 람다식 할당
a = b(1,2) //이렇게 람다식이 할당된 변수는 함수처럼 사용이 가능함!!!
}
고차 함수 : 일반 함수를 인자나 반환값으로 이용
fun main() {
printIn(highFunc({x, y -> x + y }, 10, 20) //람다식 함수를 인자로 넘김
}
fun highFunc(sum: (Int, Int) -> Int , a : Int, b : Int):Int =return sun(a+b) //sum 매개변수는 함수
이 코드는 조금 난이도가 있었다! 우선 highFunC는 고차함수로, 람다식 매개변수 sum이 int형으로 반환되는 형태이며,
정수형 매개변수 a,b가 있다. 반환되는 자료형은 int형이다. 그러면 위에 10,20이라는 정수형 매개변수를 받았으니, 리턴을 통해 sum a+b값을 반환한다. 즉 30이 출력되는 것을 확인할 수 있다. 이 코드는 천천히 살펴보면서 이해할 필요가 있다.
전역번수, 지역변수, 매소드
전역변수는 말 그대로 모든 메소드에서 사용된다. 지역변수는 메소드 내부에서만 사용이 된다.
메소드는 main()외 사용자가 추가적으로 생성할 수 있으며, 메소드가 호출될 때 파라미터를 넘길 수 있다.
메소드에서 사용된 결과를 return 문을 통해 돌려줄 수 있다.
'안드로이드 프로그래밍📱 > Kotlin📲 개념' 카테고리의 다른 글
[Kotlin] 클래스와 인스턴스 (0) | 2025.02.13 |
---|---|
[Kotlin] 배열 (0) | 2025.02.11 |
[Kotlin] 조건문:if, when (0) | 2025.02.11 |
[Kotlin] 변수& 데이터 개념 정리 (0) | 2025.02.11 |