我正在尝试将项目从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)))
感谢您的帮助!
答案 0 :(得分:1)
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?))
我知道它应该是一个简单的例子,但如果可以的话,尽量坚持使用数字并避免使用字符串。