swift - 声明一个只能包含 ASCII 字符的 Swift Character 类型?
问题描述
Swift 的Character
数据类型非常广泛,我有一个用例,我需要声明一个只能保存 ascii 字符的变量。该类型不应接受 ascii 之外的字符。
我们还有其他适合我用例的内置数据类型吗?
还是我需要编写自定义解决方案?
如果它需要定制解决方案,实现它的最佳方法是什么?
解决方案
正如问题评论中所指出的,似乎无法检查编译时间。
运行时解决方案可能是:
您可以通过 检查 aCharacter
是否为 Ascii <#Character#>.isASCII
,然后您可以创建一个自定义类,该类仅在满足条件时才存储值。
struct CustomASCIIClass {
private var storedValue : Character? = nil
var value : Character? {
get {
return self.storedValue ?? nil
}
set (newValue) {
if (newValue?.isASCII ?? false) {
self.storedValue = newValue
} else {
// handle not possible value, throw something or make the variable to have nil value.
print("invalid: ", newValue)
}
}
}
}
用法:
var a = CustomASCIIClass()
a.value = Character("A")
print(a.value) // Optional("A")
var b = CustomASCIIClass()
b.value = Character("")
print(b.value) // nil
推荐阅读
- python - 从文件中保存和检索变量值
- reactjs - 将 GitHub gist 嵌入 Docusaurus v2 文档
- android - Moshi - 使用动态参数解析 JSON
- windows - AWS ec2 windows 登录错误说发生了身份验证错误。无法联系当地安全机构
- javascript - Discord 单条消息删除器机器人
- php - Symfony Column not found: 1054 Unknown column 't44.id' in 'on Clause'
- python-3.x - 如何将最新 (2020) Django 安装到 AWS EC2 Linux 2 实例并使用 Apache Hello World 服务
- mysql - 当我想在idea上运行我的j2ee+maven+spring-boot+mysql项目时,出现错误
- r - 将日期格式更改为 r 可以识别的格式
- c - 我在 CodeChef 中得到了错误的答案,我不知道为什么。我应该怎样做才能让它正确?这是一个例子