var

Types

属于scope函数的错误类型

pub type ScopeError {
  StartErr(err: actor.StartError)
  ScopeErr(err: error.Exception)
}

Constructors

属于try_get/try_set函数的错误类型

pub type Timeout {
  Timeout
}

Constructors

  • Timeout

    超时

属于update函数的错误类型

pub type UpdateError {
  UpdateErr(err: error.Exception)
}

Constructors

要与可变值交互需要持有此类型

pub opaque type Var(var)

Values

pub fn get(var: Var(var), timeout: Int) -> var

在指定时间内(毫秒)获取值

操作可能超时,可以使用try_get

如果想一直等待可以使用get_forever

pub fn get_forever(var: Var(var)) -> var

获取值并一直等待直至成功

pub fn is_alive(var: Var(var)) -> Bool

检查可变值是否存活

该函数主要用在可变值疑似出逃的情景,使用前可以进行检查

Notice

不要过度相信这个结果,因为值可能前脚还存活后脚就被销毁了

pub fn scope(
  val: var,
  scope: fn(Var(var)) -> reason,
) -> Result(reason, ScopeError)

创建一个进程模拟可变值

可变值在回调函数中可用,函数结束自动销毁

Notice

如果回调函数已经结束,但仍有进程在持有可变值则有引发异常的风险

对于可变值出逃后的行为不作保障

Param

val:初始值

scope:一个接受可变值(Var)作为参数的函数

pub fn set(var: Var(var), timeout: Int, new_val: var) -> var

在指定时间内(毫秒)设置值,随后后返回新的值

操作可能超时,可以使用try_set

如果想一直等待可以使用set_forever

pub fn set_forever(var: Var(var), new_val: var) -> var

设置值并一直等待直至成功,随后返回新的值

pub fn try_get(
  var: Var(var),
  timeout: Int,
) -> Result(var, Timeout)

尝试在指定时间内(毫秒)获取值

pub fn try_set(
  var: Var(var),
  timeout: Int,
  new_val: var,
) -> Result(var, Timeout)

尝试在指定时间内(毫秒)设置值,随后返回新的值

pub fn update(
  var: Var(var),
  update: fn(var) -> var,
) -> Result(var, UpdateError)

使用函数更新值,随后返回更新后的值

若函数异常则保持原有值不变

Notice

该函数没有超时保护,会一直等待直至回调函数返回或异常

如果回调函数卡住则会造成阻塞,导致其他操作超时

Search Document