var
Types
属于scope函数的错误类型
pub type ScopeError {
StartErr(err: actor.StartError)
ScopeErr(err: error.Exception)
}
Constructors
-
StartErr(err: actor.StartError)进程启动失败
-
ScopeErr(err: error.Exception)回调函数异常
属于update函数的错误类型
pub type UpdateError {
UpdateErr(err: error.Exception)
}
Constructors
-
UpdateErr(err: error.Exception)回调函数异常
Values
pub fn get(var: Var(var), timeout: Int) -> 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
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
该函数没有超时保护,会一直等待直至回调函数返回或异常
如果回调函数卡住则会造成阻塞,导致其他操作超时