Blockchain 如何清晰地将两个utf8字符串连接在一起?

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

在我的Clarity智能合约中,我试图将一个字符串(“Hello”)附加到另一个字符串(“到Clarity语言”)。两个字符串的类型均为
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))