[Kotlin] Generic Functions

复制代码
//vararg: just like ...args in js
class Stack<T>(vararg val items: T) {
    
    val elements = items.toMutableList()
    
    fun push(element: T) {
        elements.add(element)
    }
    
    fun pop(): T? {
        if (!isEmpty()) {
            return elements.removeAt(elements.size - 1)
        }
        return null
    }
    
    fun isEmpty(): Boolean {
        return elements.isEmpty()
    }
}

fun <T> stackOf(vararg elements: T): Stack<T> {
    return Stack(*elements) // spread opeator *
}


fun main() {
    val stack = Stack(3,4,2,6)
    println(stack.pop())
    println(stack.pop())
    println(stack.pop())
    println(stack.pop())
    println(stack.pop()) // null
    
    val stack2 = stackOf("HI", "Hello", "Bye")
    
    for(i in 1..3) {
        println(stack2.pop())
    }
}
复制代码

 

posted @   Zhentiw  阅读(90)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2016-10-14 [TypeScript] The Basics of Generics in TypeScript
2016-10-14 [TypeScript] Using Assertion to Convert Types in TypeScript
2016-10-14 [TypeScript] Sharing Class Behavior with Inheritance in TypeScript
点击右上角即可分享
微信分享提示