관리 메뉴

History

kotlin 변수와 함수_step3 본문

kotlin/kotlin 문법

kotlin 변수와 함수_step3

luckybee 2023. 3. 5. 19:17
728x90
반응형

-함수 선언하기

함수 선언 형식: fun 함수명(매개변수명: 타입): 반환 타입{...}


 함수의 반환 타입은 지정하지 않으면 Unit타입이 적용된다.


 함수의 매개변수에는 var이나 val 키워드를 사용할 수 없다. 자동으로 val이 적용되며 함수 안에서 매개 변숫값을 변경할 수 없다.

fun some(data1: Int){
	data1= 20 // 오류
}


 함수의 매개변수에는 기본값을 선언할 수 있다.

매개 변수에 기본값을 선언했다면 호출할 때 인자를 전달하지 않아도 되며 이 때 선언했던 기본값이 적용된다.

fun main(){
	fun some(data1: Int,data2: Int=10){
		return data1*data2
	}
	println(some(10))
	println(some(10,20))

}

 

 

 어떤 함수의 매개변수가 여러개일 때 일반적으로 매개변수 순서대로 인자를 할당한다. 그러나 코틀린에서는 변수명을 지정하여 매개변수 값의 순서를 바꿀 수 있다. 이렇게 지정하여 호출하는 것을 명명된 매개변수라고 한다.

fun main(){
	fun some(data1: Int,data2: Int=10){
		return data1*data2
	}
	println(some(10,20))      //data1: 10, data2: 20
	println(some(data2:40,data1:20)) //data1: 20, data2:40

}



-컬렉션 타입


컬렉션 타입이란 여러 개의 데이터를 표현하는 방법이며 Array, List, Set, Map이 있다.

-Array 배열 표현

Array 클래스의 생성자 : (size: Int,init: (Int)->T)


코틀린의 배열은 Array클래스로 표현한다. Array 클래스의 생성자에서 펏 번째 매개변수는 배열의 크기이며, 두 번째 매개변수는 초기값을 지정하는 함수이다. 배열의 타입은 제네릭으로 표현한다. Array로 선언하면 정수 배열을 의미하며 Array으로 선언하면 문자열 배열을 의미한다.

ps) 제네릭은 선언하는 곳이 아니라 이용하는 곳에서 타입을 지정하는 기법입니다.


배열 선언 예시: val data1: Array= Array(3,{0})


위의 예시는 Array() 생성자의 첫 번째 인자가 3이고 두 번째 인자는 0을 반환하는 람다 함수이므로 0으로 초기화한 데이터를 3개 나열한 정수형 배열을 선언한다는 뜻이다.

배열의 데이터에 접근할 때는 대괄호를 이용해도 되고 set()이나 get() 함수를 이용할 수도 있다.

fun main(){
   val data1: Array=Array(3,{0})
   data1[0]=10
   data1[1]=20
   data1.set(2,30)  //배열 2번째 데이터를 30으로 설정

   println("""
     array size: ${data1.size} // 3
     array data: ${data1[0]},${data1[1]},$data1.get(2) //10 20 30

""")

}


-기초 타입의 배열

array를 사용하지 않고 각 기초 타입의 배열을 나타내는 클래스를 이용할 수도 있다.

ex) BooleanArray, ByteArray, CharArray, DoubleArray, FloatArray, IntArray, LongArray, ShortArray
val data1: IntArray= IntArray{3,{0}}
val data1: BooleanArray= BooleanArray{3,false}



또한 arrayof()라는 함수를 이용하면 배열을 선언할 때 값을 할당할 수도 있습니다.

fun main(){
  val data1 = arrayof(10,20,30)
  println("""
   array size: ${data1.size}    //3
   array data: ${data1[0]},${data1[1]},${data1.get(2)}// 10, 20, 30

""")
  
}



arrayof() 함수도 기초 타입을 대상으로 하는 클래스를 이용할 수도 있습니다.

ex) BooleanArrayOf(), ByteArrayOf(), CharArrayOf(), DoubleArrayOf(), FloatArrayOf(), 
   IntArrayOf(), LongArrayOf(), ShortArrayOf()
val data1 = IntArrayOf(10, 20, 30)
val data2 = BooleanArrayOf(true, false, true)



-List, Set, Map  ->Collection 인터페이스를 타입으로 표현한 클래스 ->컬렉션 타입 클래스

List: 순서가 있는 데이터 집합으로 데이터의 중복을 허용합니다.
Set: 순서가 없으며 데이터의 중복을 허용하지 않습니다.
Map: 키와 값으로 이루어진 데이터 집합으로 순서가 없으며 키의 중복은 허용하지 않습니다.



Collection은 가변 클래스 불변 클래스로 나뉜다.

가변 클래스: 초기에 값을 대입하면 더 이상 변경할 수 없는 타입
불변 클래스: 초기에 값을 대입해도 데이터를 추가하거나 변경이 가능한 타입
구분   타입  함수 특징
List List ListOf() 불변
MutableList  MutableListOf() 가변 
Set Set   SetOf()  불변
MutableSet  MutableSetOf() 가변 
Map  Map  MapOf()  불변
MutableMap MutableMapOf() 가변 


리스트 사용 예시

fun main(){
  var list = listOf(10,20,30)
  println("""
   list size: ${list.size}    //3
   list data: ${list[0]},${list.get(1)},${list.get(2)}// 10, 20, 30

""")
  
}



불변 리스트 사용 예시

fun main(){
  var MutableList = MutableList(10,20,30)
  MutableList.add(3,40)
  MutableList.set(0,50)
  println("""
   list size: ${MutableList.size}    //4
   list data: ${MutableList[0]},${MutableList.get(1)},${MutableList.get(2)} // 50, 20, 30 40
	,${MutableList.get(3)}
	""")
  
}



Map 객체는 키와 값으로 이루어진 데이터의 집합이다. Map 객체의 키와 값은 Pair 객체를 이용할 수도 있고 '키 to 값' 형태로 이용할 수도 있다.

fun main(){
  var Map = MapOf<string, string>(Pair("one","hello"),"two" to "world")</string, string>
  println("""
   Map size: ${Map.size}    //2
   Map data: ${Map.get("one")},${Map.get("two")}// hello, world

""")
  
}


이처럼 Map 객체에 대입되는 데이터의 키와 값은 모두 String 타입이 되고 Pair("one", "hello")처럼 키값을 Pair 객체로 표현해 Map에 대입할 수  도 있고 "two" to "world"처럼 Map 객체에 대입할 수도 있다.

 

728x90
반응형

'kotlin > kotlin 문법' 카테고리의 다른 글

kotlin 변수와 함수_step2  (0) 2023.03.05
kotlin 변수와 함수_step1  (0) 2023.03.05
kotlin 소개  (1) 2023.03.05
Comments