๋ฐ์ํ
์ค์ฝํ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ ์์ ์ค์ผ ์ ์๋ค.
์์ ์ผ๋ก ์ด๋ ค์์ ์ ํ๋ธ๋ฅผ ํตํด ๊ฐ์ข๋ฅผ ์์ฒญํ๋ค.
↓ ์ถ์ฒ(์ฝ๊ฒ ์ดํด ๋๋ค.)
https://www.youtube.com/watch?v=QGDWWL6qA3I
https://www.youtube.com/watch?v=B-QPB487aVA
fun main() {
var price = 5000
var book = Book("๋๋ชจ",10000)
book.name = "[์ดํน๊ฐ]" + book.name
book.discount()
// scope ํจ์ apply๋ฅผ ์ฌ์ฉํ๋ฉด, ์ฐธ์กฐ ์ฐ์ฐ์๋ฅผ ์์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
// apply๋ ์ธ์คํด์ค ์์ ์ ๋ค์ ๋ฐํํ๋ฏ๋ก, ์์ฑ๋์ ๋ง์ ์กฐ์๋ ์ธ์คํด์ค๋ฅผ ๋ณ์์ ๋ฐ๋ก ๋ฃ์ด์ค ์ ์๋ค.
// main ํจ์์ ๋ณ๋์ scope์์ ์ธ์คํด์ค์ ๋ณ์์ ํจ์๋ฅผ ์กฐ์ํ๋ฏ๋ก ์ฝ๋๊ฐ ๊น๋ํด์ง๋ค๋ ์ฅ์ ์ด ์๋ค.
var book2 = Book("๋๋ชจ2",10000).apply {
name = "[์ดํน๊ฐ]" + book.name
discount()
}
// run ์ค์ฝํ๋ apply ์ฒ๋ผ ์ฐธ์กฐ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง ์ํ๋ ๋๋ค๋ ์ ์ ๊ฐ์ง๋ง ์ผ๋ฐ ๋๋ค ํจ์์ฒ๋ผ ์ธ์คํด์ค ๋์
// ๋ง์ง๋ง ๊ตฌ๋ฌธ์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํ ํ๋ค. ์ฆ ์ด๋ฏธ ์ธ์คํด์ค๊ฐ ๋ง๋ค์ด์ง๊ณ ์ดํ์ ์ธ์คํด์ค์ ํจ์๋ ์์ฑ์ ์ค์ฝํ ๋ด์์ ์ฌ์ฉํด์ผ ํ ๋ ์ ์ฉ
book2.run{
println("์ํ๋ช
: ${name}, ๊ฐ๊ฒฉ: ${price}์")
}
//with : run๊ณผ ๋์ผํ ๊ธฐ๋ฅ์ ๊ฐ์ง์ง๋ง,
// ๋จ์ง ์ธ์คํด์ค ์ฐธ์กฐ ์ฐ์ฐ์ ๋์ ํจ๋ฌ๋ฏธํฐ๋ก ๋ฐ๋๋ค๋ ์ฐจ์ด
// a.run {...}
// with(a) {...}
// also , let : ํ๋ผ๋ฏธํฐ๋ก ์ธ์คํด์ค๋ฅผ ๋๊ธด ๊ฒ์ฒ๋ผ it ์ ํตํด์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ์ ์์
// ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ์ธ์คํด์ค๋ฅผ ๋ฐํ apply/ also
// ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ์ต์ข
๊ฐ์ ๋ฐํ run / let
book2.let{
println("์ํ๋ช
: ${it.name}, ๊ฐ๊ฒฉ: ${it.price}์")
}
}
class Book(var name: String, var price: Int)
{
fun discount()
{
price -= 2000
}
}
it | this | |
์ธ์คํด์ค ๋ฐํ | also | apply |
์ต์ข ๊ฐ ๋ฐํ | let | run |
List
import java.io.File
fun main() {
/**
* List: ๊ฐ ์์๊ฐ์ด ์์ฐจ์ ์ผ๋ก ์ ์ฅ. ์ค๋ณต๊ฐ ํ์ฉ
* List๋ ์ ๋ค๋ฆญ ํ์
์ด๊ธฐ ๋๋ฌธ์, ์ด๋ค ํ์
์ ๋ฐ์ดํฐ๋ ์ ์ฅํ ์ ์๋ค.
* โ
List ๋ณ๊ฒฝ ๊ฐ๋ฅ ์ฌ๋ถ๋ List ํ์
์ ์ํด ๊ฒฐ์ ๋๋ฉฐ, '๋ณ๊ฒฝ ๊ฐ๋ฅ'์ List์ ์ ์ฅ๋ ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ฒ์ ๋งํ๋ค.
* โ
๋ณ๊ฒฝ ํ๋ ค๋ฉด listOf ๋์ mutableListOf ํจ์๋ฅผ ์ฌ์ฉํด์ ์์ฑํด์ผ ํ๋ค.
*
* ์์ ๋ฐฉ์์ด ์๋๋๋ผ๋, toList ํน์ toMutableList๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ธฐ ์ ์ฉ๊ณผ ๋ณ๊ฒฝ ๊ฐ๋ฅ ๋ฒ์ ๊ฐ์ ์ํธ ๋ณ๊ฒฝํ ์ ์๋ค.
*
* foreach์ foreachIndexed ํจ์๋ ์ฝํ๋ฆฐ์ ๋ค๋ฅธ ํ์
์๋ ์ฌ์ฉ ๊ฐ๋ฅ.
*
*
* Set: ์ค๋ณต ๋ถ๊ฐ
*/
// ์ ๊ทผ
var customerList = mutableListOf("eli","carrie","sky")
// var customerList: List<String> = listOf("eli","carrie","sky") - ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๋ฆฌ์คํธ์!
println(customerList)
println(customerList.first())
println(customerList.last())
println(customerList[0])
// ์์ ํ ์ธ๋ฑ์ค
// getOrElse ๋๊ฐ์ ์ธ์๋ฅผ ๋ฐ๋๋ค. ์ฒซ ๋ฒ์งธ ์ธ์๋ ๊ดํธ๋ก ๋๋ฌ์ผ ์์ฒญ๋ ์ธ๋ฑ์ค. ๋๋ฒ์งธ ์ธ์๋ ๋๋ค
println(customerList.getOrElse(4){"defualt"})
// contains
if(customerList.contains("carrie")) {
println("์ค carrie ์์ ์์ด์~")
}else{
println("์ค ์๋ค์~")
}
if(customerList.containsAll(listOf("carrie","sky"))){
println("๋ค ๋๋ค ์๋ค์~")
}else{
println("๋๊ฐ ์ฌ๋๋ ์์ด์~")
}
// add remove - mutable List ์ฌ์ผ ๊ฐ๋ฅ
customerList.add("jerry")
customerList.add("daphne")
customerList.remove("eli")
// ํน์ ์์น์ add
customerList.add(0,"sharon")
customerList.add(0,"dory")
// ์ธ๋ฑ์ค๋ก ์ ๊ทผํ์ฌ ๋ฐ๊พธ๊ธฐ
customerList[0] = "dorydory"
// add all (listOf("",""))
// clear ๋ชจ๋ ๊ฐ ์ญ์
println(customerList)
// ๋ฆฌ์คํธ ๋ฐ๋ณต ์ฒ๋ฆฌ : for ๋ฌธ
for (customer in customerList){
println("๊ณ ๋ง์์ ์ ๋ง. ${customer}๋")
}
// ์๋ฐ for(int i = 0; i<10; i++) {}
// ์ฝํ๋ฆฐ for(i in 1..10) {}
// ferEach๋ List ๊ฐ ์์๋ฅผ ์ผ์ชฝ ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋์ฉ ๊ฐ์ ธ์ด. ์ธ์๋ก ์ง์ ํ ์ต๋ช
ํจ์์ ์ ๋ฌํ๊ณ ์คํ
customerList.forEach{
customer ->
println("์ด๊ฑด for each ${customer}")
}
// forEachIndexed ๋ฅผ ์ฌ์ฉํด์ ๊ณ ๊ฐ ์์ ๋ณด์ฌ์ฃผ๊ธฐ
customerList.forEachIndexed { idx, customer ->
println("์ธ๋ฑ์ค์ ์ด๋ฆ ๋๋ค ์ด๋ฆ์ ${customer}์ด๊ณ ${idx+1}๋ฒ์งธ ๋ค์~!")
}
// ํ์ผ๋ก๋ถํฐ ๋ฉ๋ด ๋ฐ์ดํฐ ์ฝ๊ธฐ
val menuList = File("out/data/menu_items.txt")
.readText()
.split("\n")
menuList.forEachIndexed { idx, menu ->
println("${idx}: ${menu}")
}
// ํด์ฒด ์ ์ธ -
// List ๋ ๋งจ ์์ ๋ค์ฏ ๊ฐ ์์๊น์ง ๋ณ์๋ก ํด์ฒดํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
// ํด์ฒด๋ฅผ ์ํ์ง ์๋ ์์์ ๋ฐ์ค ๊ธฐํธ(_)๋ฅผ ์ฌ์ฉํด์ ์ ํ์ ์ผ๋ก ํด์ฒด ๊ฐ๋ฅ
}
Set
While
import java.io.File
/**
* Set : ์ค๋ณต ๋ถ๊ฐ๋ฅ
*
* ์ฃผ๋ก ์ธ๋ฑ์ค ๊ธฐ๋ฐ์ ์ด๋ ํ ๊ฒ๋ค์ ์ง์ํ์ง ์๋๋ค.
* add / add all /remove / removeAll/ clear
* += . -=.
*/
fun main() {
val planets = setOf("Mercury","Venus","Earth")
println(planets)
// ์๋ ์ด๋ฆ
var customerList = mutableListOf("eli","carrie","sky")
// ์๋ ์ฑ
val lastName = listOf("Jung", "Do", "Lee")
val menuList = File("out/data/menu_items.txt")
.readText()
.split("\n")
// ๊ณ ์ ํ ์ด๋ฆ
val uniqueName = mutableSetOf<String>()
// ์์ ์๋์ง ์์ ์ด๋ฆ ๋๋ ์ธ๋ฑ์ค๋ก ํ์ธ >> true false ๋ก ๋ฐํํจ.
// elementAt์ ์ธ๋ฑ์ค ๊ธฐ๋ฐ์ List ์ฌ์ฉ๋ณด๋ค ๋๋ฆฌ๋ค. (์ธ๋ฑ์ค ๊ธฐ๋ฐ์ ์ฒ๋ฆฌ๋ฅผ ์ํ๋ค๋ฉด Set ์ด ์๋ List๋ฅผ ์ฌ์ฉํด์ผํจ)
println(planets.contains("Earth"))
println(planets.elementAt(2))
// ๋ณ๊ฒฝ์ ๊ฐ๋ฅํ์ง๋ง add(index, element) ์๋ค.
// set์ ์ถ๊ฐํ์ฌ ์ค๋ณต๋ ์์๊ฐ ์ญ์ ๋๋ฉด ๊ณ ์ ํ ๊ณ ๊ฐ ์ด๋ฆ์ ๊ฐ๋ ์์๋ค๋ง ๋จ๊ฒ ๋ ๊ฒ์ด๋ค.
(0..9).forEach {
val first = customerList.shuffled().first()
val last = lastName.shuffled().first()
val name = "${first} ${last}"
uniqueName += name
// println(name)
}
println(uniqueName)
/**
* for ๋ฃจํ๋ ๊ฐ ์์๋ค์ ๋ํด ์ฐ์์ ์ผ๋ก ์ฝ๋ ์คํํ ๋ ์ ์ฉ.
* ๋ฐ๋ณต ์ฒ๋ฆฌ๋ ์ ์๋ ์ํ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๋๋ ์ ํฉํ์ง ์์ผ๋ฏ๋ก ์ด๋๋ while ๋ฃจํ ์ ์ฉ
* while ๋ฃจํ ๋ก์ง : ์ด๋ค ์กฐ๊ฑด์ด true์ผ ๋์๋ง ์ด ๋ธ๋ก์ ์ฝ๋๋ฅผ ์คํํ๋ผ.
*
* break ํํ์ - ๊ทธ ์ฆ์ ๋ฃจํ๋ฅผ ๋ฒ์ด๋๋ค. ์์ ์ด ์คํ๋๋ ๋ฃจํ๋ง ์ค๋จ.
* */
var orderCount = 0
while(orderCount <= 9){
uniqueName.shuffled().first()
menuList.shuffled().first()
orderCount ++
}
}
์ปฌ๋ ์ ๋ณํ
fun main() {
// list → set → list ๋ก ๋ฐ๊ฟ์ค์ผ๋ก์จ ์ค๋ณต์ ์ ๊ฑฐ ํ ์ธ๋ฑ์ค์ ์ ๊ทผ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
val customer = listOf("ji do", "hojin jang","cherry")
.toSet()
.toList()
println(customer[1])
}
๋ฐฐ์ด ํ์
* ์๋ฐ๋ ๋ฐฐ์ด์ด ๊ธฐ๋ณธ ํ์
์ธ๋ฐ ์ฝํ๋ฆฐ์ Arrays๋ผ๋ ์ฐธ์กฐ ํ์
์ผ๋ก ๋ฐฐ์๋ฅด ์ง์ํ๋ค.
* Arrays ํ์
์ ์ฝํ๋ฆฐ๊ณผ ์๋ฐ ๊ฐ ์ํธ์ด์ฉ์ ์ง์ํ๊ธฐ ์ํด ํฌํจ๋์ด ์๋ค.
๋ฐ์ํ
'Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Kotlin_์์ / ๊ฐ์ฒด / ์ธํฐํ์ด์ค์ ์ถ์ ํด๋์ค (0) | 2021.07.02 |
---|---|
Kotlin_Map / Class (0) | 2021.07.01 |
Kotlin_Null & ๋ฌธ์์ด & ์ซ์ ํ์ (2) | 2021.06.30 |
Kotlin - ์ต๋ช ํจ์์ ํจ์ ํ์ (1) | 2021.06.30 |
Navigation - jetpack / kotlin xml ์์ ์ฐธ์กฐ / ์์ ์ฐธ๊ณ - Kotlin ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๊ณต๋ถ ์ผ์ง (0) | 2021.06.29 |
๋๊ธ