Blockchain 如何清晰地将两个utf8字符串连接在一起?
在我的Clarity智能合约中,我试图将一个字符串(“Hello”)附加到另一个字符串(“到Clarity语言”)。两个字符串的类型均为Blockchain 如何清晰地将两个utf8字符串连接在一起?,blockchain,smartcontracts,clarity,Blockchain,Smartcontracts,Clarity,在我的Clarity智能合约中,我试图将一个字符串(“Hello”)附加到另一个字符串(“到Clarity语言”)。两个字符串的类型均为string-utf8 部署下面的协定失败,出现错误:需要类型为\'(string-utf8 100)\'的表达式,找到\'(string-utf8 120)\' 如何进行此操作?concat不会优化结果字符串。新字符串的类型为string-utf8,长度为120,将变量类型的长度添加到另一个字符串的长度中(100+20) 您必须将concat调用包装为max
string-utf8
部署下面的协定失败,出现错误:需要类型为\'(string-utf8 100)\'的表达式,找到\'(string-utf8 120)\'
如何进行此操作?
concat
不会优化结果字符串。新字符串的类型为string-utf8,长度为120,将变量类型的长度添加到另一个字符串的长度中(100+20)
您必须将concat
调用包装为max len?:
(define-data-var a-string (string-utf8 100) u"Hello")
(var-set a-string
(unwrap! (as-max-len?
(concat (var-get a-string) u" to Clarity Language") u100) (err "text too long")))
(print (var-get a-string))
注意,类型长度由int
(100
)定义,而as max len?
采用uint
参数(u100
)
(define-data-var a-string (string-utf8 100) u"Hello")
(var-set a-string
(unwrap! (as-max-len?
(concat (var-get a-string) u" to Clarity Language") u100) (err "text too long")))
(print (var-get a-string))