Localized V2 rewrite for this language is in progress. Showing English-first content for now.

自定义效果

定义你自己的效果,并通过函数签名传播它们。

自定义效果

Sounio 允许你声明自己的效果,用于建模领域特定的副作用。

声明一个效果

效果是一组具名操作:

effect Fail {
    fn fail(msg: string) -> !
}

使用效果

像普通函数一样调用效果操作,并在签名中声明该效果:

fn might_fail() with Fail {
    Fail.fail("something went wrong")
}

传播需求

调用者也必须声明该效果:

fn main() with Fail {
    might_fail()
}

如果忘记了,编译器会报错:

fn main() {
    might_fail()  // ERROR: Fail effect not declared / handled
}

规范说明: 效果处理器(Handlers)

语言设计包含代数效果处理器(resumption、解释等)。如果你在旧文档中看到 handle / resume 语法,请将其视为 规范层面 的内容,除非当前编译器模式明确支持。

下一步