kotlin学习别埋头啃书,这4个坑先绕开
盯着IDE里那个红色波浪线,你第几次把鼠标悬停在'Type mismatch'上发呆?
先别急着刷教程,这几个坑我替你踩了
kotlin学习初期最容易卡在控制流上。if表达式当成语句用,返回类型对不上,编译器直接翻脸。记住一条铁律:if、when最后一行就是返回值,别顺手加个return。另一个高频翻车点是可空类型。声明String?之后,直接调length会炸。解决方法很简单:用?.安全调用,或者用?:给个默认值。别因为怕麻烦就把所有类型写成非空,否则上线后空指针崩溃会教做人。
还有集合操作。map、filter链式调用看着爽,但你确定每次中间结果类型对了吗?有人把MutableList传进函数,被改了还不知道。能只读就别可变。多用listOf、mapOf,少用mutableListOf。如果追求性能,记得看源码省不省内存。
有个读者后台留言说:'调了俩小时,原来是个括号位置不对。'你笑出声,但心里清楚自己也犯过。
协程入门?先关掉那些玄学教程
kotlin学习绕不开协程,但很多人一上来就搞launch和async却不懂调度。GlobalScope.launch在Activity里用?那关闭时直接泄露。正确做法是用lifecycleScope或者ViewModelScope。另外withContext(Dispatchers.IO)别包太多网络请求,线程池满了一样卡。想验证并发效果,写个小demo压一下,别信网上说的'协程零开销'。
还有个细节:suspend函数只能在协程或另一个suspend函数里调用,这个限制卡住不少新手。解决?用runBlocking测试,但别在生产代码里用。它会阻塞线程,违背协程初衷。如果遇到'编译卡住',八成是协程构建器用错了作用域。
别在教程上耗太久。打开IDE,把官方samples扒下来跑一遍,跑不通就去Stack Overflow搜具体错误。参数调整建议去官网扒源码,那玩意儿最准。




