fun readNumbers(text: String): List<Int?> {
val result = mutableListOf<Int?>() // null이 될 수 있는 값으로 이뤄진 가변 리스트
for(line in text.lineSequence()){ // 입력 문자열을 한 줄씩 순회
val numberOrNull = line.toIntOrNull()
result.add(numberOrNull)
}
return result
}


fun addValidNumbers(numbers: List<Int?>){
val validNumbers = numbers.filterNotNull()
println("Sum of valid numbers: ${validNumbers.sum()}")
println("Invalid numbers: ${numbers.size - validNumbers.size}")
}


fun <T> copyElements(source: Collection<T>, target: MutableCollection<T>) {
for(item in source)
target.add(item)
}
fun main() {
val source: Collection<Int> = arrayListOf(3, 5, 7)
val target: MutableCollection<Int> = arrayListOf(1)
copyElements(source, target)
print(target)
// [1, 3, 5, 7]
}
fun main() {
val source: Collection<Int> = arrayListOf(3, 5, 7)
val target: Collection<Int> = arrayListOf(1)
copyElements(source, target)
print(target)
// Argument type mismatch:
// actual type is 'Collection<Int>', but 'MutableCollection<Int>' was expected.
}

import java.io.File;
import java.util.List;
interface FileContentProcessor {
void processContents(
File path,
byte[] binaryContents,
List<String> textContents
);
}
import java.io.File
class FileIndexer: FileContentProcessor {
override fun processContents(
path: File?,
binaryContents: ByteArray?,
textContents: List<String?>?)
{
/*...*/
}
}
fun main() {
val letters = Array<String>(26) { i -> ('a' + i).toString() }
println(letters.joinToString(""))
// abcdefghijklmnopqrstuvwxyz
}
fun main() {
val strings = listOf("a", "b", "c")
println("%s/%s/%s".format(*strings.toTypedArray()))
// vararg 인자를 넘기기 위해 스프레드 연산자 사용
// a/b/c
}
각 배영 타입의 생성자 : size를 인자로 받아 해당 원시 타입의 기본값으로 초기화된 size 크기의 배열을 반환
val fiveZeros = IntArray(5)
팩토리 함수 : 여러 값을 가변 인자로 받아 그 값이 들어간 배열을 반환
val fiveZeros = intArrayOf(0, 0, 0, 0, 0)
크기와 람다를 인자로 받는 생성자
fun main() {
val squares = IntArray(5) { i -> (i + 1) * (i + 1) }
println(squares.joinToString())
// 1, 4, 9, 16, 25
}
fun main(args: Array<String>) {
args.forEachIndexed { index, element ->
println("Argument $index is : $element")
}
}