gpt4 book ai didi

scala.js - ScalaJS : How to create Option[A] from JS?

转载 作者:行者123 更新时间:2023-12-04 18:24:53 24 4
gpt4 key购买 nike

我有一个我想从 JS 调用的 ScalaJS 函数,它有一个 Option[String] 参数。我不知道如何从 JS 创建 Some[String] 和 None[String]。

最佳答案

简短的回答:你不能。不过,您的问题有两种解决方案。

公开全局函数以构建 Some s 和检索 None (次优)

在 Scala.js 代码库中添加这样的对象:

package some.pack

@JSExport
object OptionFactory {
@JSExport
def none(): None.type = None

@JSExport
def some[A](value: A): Some[A] = Some(value)
}

您现在可以使用来自 JS 的工厂来创建选项:

var none = some.pack.OptionFactory.none()
var some = some.pack.OptionFactory.some(5)

直接暴露 API 操作 js.UndefOr (受到推崇的)

而不是强制 JS 去操作 Option s,您可以直接从您的 Scala.js 类公开一个对 JS 友好的 API。假设您要公开的函数类似于:

def foo(opt: Option[Int]): Unit = ???

您可以替代或另外导出以下 JS 友好版本:

@JSExport
def foo(opt: js.UndefOr[Int]): Unit = foo(opt.toOption)

这将允许 JS 简单地使用 undefinedNone以及 Some[Int] 的任何整数,例如:

scalaJSObj.foo(undefined)
scalaJSObj.foo(5)

关于scala.js - ScalaJS : How to create Option[A] from JS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com