팩토리 함수

// 기본 생성자
class MyLinkedList<T>(
    val head: T,
    val tail: MyLinkedList<T>?
)

// 사용
val list = MyLinkedList(1, MyLinkedList(2, null))
// 팩토리 함수
fun <T> myLinkedListOf(
    vararg elements: T
): MyLinkedList<T>? {
    if (elements.isEmpty()) return null
    val head = elements.first()
    val elementsTail = elements.copyOfRange(1, elements.size)
    val tail = myLinkedListOf(*elementsTail)

    return MyLinkedList(head, tail)
}

// 사용
val list = myLinkedListOf(1, 2)

팩토리 함수의 장점

팩토리 함수의 종류

1. Companion 객체 팩토리 함수

팩토리 함수를 정의하는 가장 일반적인 방법