Stacks Clarity智能合约中函数末尾带问号的原因咨询
关于Clarity智能合约中带问号函数的说明
- 带问号的函数是安全型函数,这类函数专门用来处理可能返回空值(
none)的场景。比如map-get?,当你从映射中取值时,如果目标键不存在,它会返回none,不会直接让合约崩溃。 - 不带问号的版本(比如
map-get)属于非安全型函数,它要求操作必须能成功——比如调用map-get时,传入的键必须存在于映射中。如果键不存在,合约会直接panic终止执行,这就是你去掉问号后无法正常运行的核心原因。 - Clarity用函数名末尾的问号作为明确标识,区分两类函数的行为:带问号的返回
(optional <type>)类型,允许空值;不带问号的返回确定类型,但操作失败会直接触发合约错误。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

