我正在尝试将项目从 Racket 转换为 Typed Racket,但在打字机制方面遇到了一些问题。
string->number 返回(U Complex False),但我找不到任何程序将其(甚至只是一个 Complex)转换为整数。
一个非常简短的例子来说明我的问题:
#language typed/racket
(define die : Integer 5)
(define dlist '("1" "2" "3" "4" "5"))
(set! die (string->number (car dlist)))
感谢您的帮助!
string->number
的结果具有类型(U Complex False)
,其中false
的值意味着string->number
无法解析数字。在这种情况下,您确信它不会失败,因此您可以断言它是一个带有 (assert (string->number ...) exact-integer?)
: 的整数
#lang typed/racket
(define die : Integer 5)
(define dlist '("1" "2" "3" "4" "5"))
(set! die (assert (string->number (car dlist)) exact-integer?))
我知道这应该是一个简单的示例,但如果可以的话,请尝试坚持使用数字并避免使用字符串。