# 运算符-拼接与冒泡

**`&` 拼字符串,`?` 把失败结果抛给上层。**

```xuantie
设 转 = 整(输("数字:"))?
示("两倍: " & 字(转 * 2))
```

## `&` 字符串拼接

连接两个值成新字符串;非字符串一侧自动转文本。

```xuantie
设 消息 = "计数: " & 42
```

也可以先显式转换再拼:

```xuantie
示("两倍 = " & 字(转.值 * 2))
```

## `?` 错误冒泡

跟在返回 `结果` 的表达式后:成功则解包出值;失败则当前函数立刻把这个失败返回给上层调用者。

```xuantie
设 值 = 除法(10, 2)?
```

也可以单独成行:

```xuantie
设 包 = 除法(10, 2)
设 真值 = 包 ?
// ↑ 标识符允许以 ? 结尾(如 存在?),变量名与 ? 之间必须留空格,否则会被词法器读成一个标识符
```

## 注意

- `?` 只能跟在返回 `结果` 类型的表达式之后。
- `?` 按位置有三种含义:错误冒泡后缀、可空类型修饰(`节点?`)、标识符结尾(`文件.存在?`)。

## 相关

[运算符-符号](运算符-符号.md) · [运算符-算术](运算符-算术.md) · [结果类型与错误处理](../01_结果类型与错误处理.md)