闲着没事用 Kotlin 写了个 Rust 风格的 Result

2021-11-04 13:00:40 +08:00
 857681664
fun main() {
    val fileUtil = FileUtil()
    val result = fileUtil.openFile("ok")
    val content = result match {
        OK {
            data
        }
        Error {
            throw error
        }.toString()
    }
    println(content)
}

Error 闭包那个 toString 想了好久也没想出怎么去掉。

1677 次点击
所在节点    程序员
9 条回复
Kasumi20
2021-11-04 13:53:26 +08:00
这是啥?中缀函数?
857681664
2021-11-04 14:47:38 +08:00
@Kasumi20 是的
aguesuka
2021-11-04 14:58:14 +08:00
稍微改了一下
https://gist.github.com/ilhikki/fad115495ff78564a1e605eef11a864a
是中缀表达式吗, 怎么可以换行
857681664
2021-11-04 15:01:24 +08:00
@aguesuka 是中缀,你说的换行指的是哪里,是 match 后面没有跟参数吗
aguesuka
2021-11-04 15:02:31 +08:00
@857681664 我代码里的 FAIL 如果不和花括号一行的话就报错.
857681664
2021-11-04 15:17:33 +08:00
@aguesuka 好像看不太出来为啥,我写的没有这么复杂,都是带接收者的 lambda
857681664
2021-11-04 15:37:44 +08:00
尝试用可空类型解决了 toString 的问题
```kotlin
fun main() {
val fileUtil = FileUtil()
val result = fileUtil.openFile("error")
val content = result match {
OK { str ->
str
}
Error { error ->
throw error
}
}
println(content)
}
```
SoloCompany
2021-11-04 20:45:46 +08:00
你说的是 Nothing 类型吧? 怪不得看起来怪怪的
857681664
2021-11-04 23:28:03 +08:00
@SoloCompany 没有 nothing 呀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/812981

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX