Ben*_*ten 11 kotlin union-types sum-type
联合类型(也称为求和类型)是一种强大的语言功能,我发现自己经常在 TypeScript 中使用它
\n大致如下:
\nlet a: string | number = \xe2\x80\x9chello\xe2\x80\x9d\na = 3\nRun Code Online (Sandbox Code Playgroud)\n我如何在 kotlin 中实现这种类型的行为?
\n我看到一些人谈论使用继承和密封类来完成此任务,但看起来如果您想将这种方法与基元(例如 String 和 Int)一起使用,那么就必须围绕这些类型编写包装器来访问底层值。
\n我想知道是否有更务实的解决方案。
\nAle*_*nov 10
Kotlin 问题跟踪器中存在一个问题:可表示的并集和交集类型(它还包含一些先前讨论的链接)。团队的最新更新是
Roman Elizarov 于 2021 年 11 月 19 日 18:14 评论了
此问题的简短更新。这是一个有趣且重要的特性,但是以向后兼容且务实的方式集成到语言中确实很难。当我们发布新的 K2 编译器时,我们将开始全面研究它,我们团队中最好的编译器工程师将能够开始研究它。
据我所知,在 kotlin 中并没有真正的“漂亮”方法来实现这一点,实现可以保存字符串和整数的变量的一种方法可能如下所示:
var x: Any = 5
x = "hello"
Run Code Online (Sandbox Code Playgroud)
但正如您所注意到的,X 不仅可以保存字符串和整数,而且可以使用 Arrow 库中的“Either”类(如果我没记错的话),它允许这种行为:
var x = Either<Int, String>(5)
Run Code Online (Sandbox Code Playgroud)
不管怎样,我不太确定为什么你需要这样一个变量
| 归档时间: |
|
| 查看次数: |
6560 次 |
| 最近记录: |