-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
基本类型里面是否去掉char或者改成32位 #95
Comments
golang的处理方式: string就是utf8字节数组,如果想单独处理string中的某个字符,需要将string转成 rune数组, rune就是32位; java由于出现比较早,有char类型,但是java的char类型并不能完整标识一个字符,于是java在String里面提供codePointAt 方法,返回一个int类型,用来标识一个字符 |
已经收到您的问题,deeplang设计组正在讨论解决方案。 |
编程语言字符、字符串设计unicode字符集已经超过100万,每个字符用16位bit来存储是不够的,如果用32bit,又有些浪费。
可以看到rust,golang这两个最近出现的语言,一个字符都是用32bit表示。平常使用的字符串则使用8bit数组,使用utf8编码的字节数组。 |
非常感谢你的分析。关于字符串的设计,deeplang社区有几个提案正在讨论,因为涉及到前端以及后端的设计,是一个纵向的feature,需要多些时间做仔细的设计。 |
文档里面有char这个基本类型,一般char用来表示一个字符,但是char只有16位,是不足以完整表示一个字符的,一个u32/i32 才能完整存储一个字符。是否去掉char类型,直接用i32。或者保留char, 像rust一样,char改成32位。
最早的unicode版本收录的字符少,16位就够了,后面unicode已经有100万+字符了,16位完全不够。这个时候,用16位的char就完全不够了。改成32位是一个比较好的选择
The text was updated successfully, but these errors were encountered: