purescript - 将多态记录传递给外部函数
问题描述
我有R1
和R2
记录类型,我需要传递R1
或传递R2
给外部函数(它可以处理 r1 或 r2 记录结构)是否可以这样做(我想可能是通过转换为外部对象)?
或者我是否需要声明两个不同的外部导入(具有不同的类型签名用于传递R1
和R2
)指向同一个 js 函数?
unsafeCoerce
我发现用于类型转换的另一种方法:
foreign import data R1orR2 ∷ Type
fromR1 :: R1 -> R1orR2
fromR1 = unsafeCoerce
fromR2 :: R2 -> R1orR2
fromR2 = unsafeCoerce
所以也许还有其他方法。
解决方案
在编写 FFI 绑定时,unsafeCoerce
这很好:毕竟,foreign import
已经有所有相同的缺点,所以你并没有真正失去任何东西。
是的,你想出的R1orR2
——是在 FFI 绑定中经常使用的正确方法。
您可能还想查看undefined-is-not-a-problem
和untagged-union
图书馆。他们在该领域提供了一些更高级和通用的技术。
推荐阅读
- c++ - 为什么 socket(AF_INET, SOCK_STREAM, 0) 返回 -1?
- python - 创建关系时出现 SQLAlchemy 错误
- c# - Rotating a shape around its center using mouse position
- perl - 逐行条件编辑
- react-native - 如何指定/升级 hermes-engine 版本?
- android-studio - Android studio Gradle 无法启动守护进程
- javascript - 在 onChange 中反应事件目标值
- flutter - 如何在flutter中为无状态小部件内的变量编写if语句
- java - Actor 的 LibGdx MoveTo() 操作方法不起作用
- python - 使用 python openpyxl 将一些 excel 公式变为唯一值