安全地从可选链中提取值

Swift Medium optionals

任务 «安全地从可选链中提取值»

给你一个字符串,其中包含由空格分隔的整数。某些数字可能缺失(用 '?' 代替)。请编写一个函数,该函数接收字符串,将其拆分为多个部分,使用 `Int($0)` 将每个部分转换为可选的 Int。如果某个部分等于 '?',则应将其转换为 nil。然后,从得到的可选值数组中,使用紧凑的可选链(例如通过 `compactMap` 和 `reduce`)提取并累加所有不为 nil 的值。如果处理后没有剩余任何数字,则返回 nil。否则,将总和作为 Int 返回。输入数据:一个字符串。输出数据:一个整数或字符串 "nil"。

输入格式

一行包含整数和/或字符 '?' 的字符串,由空格分隔。

输出格式

整数(所有不等于nil的数字之和)或字符串"nil"(如果没有数字)。

示例

示例 1

输入
3 ? 7 ? 2
输出
12

示例 2

输入
? ? ?
输出
nil

示例 3

输入
3 cat apple dog
输出
3
main.swift