键入的球拍字符串 - >编号如何将结果转换为整数

时间:2017-03-28 15:35:56

标签: scheme racket typed

我正在尝试将项目从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)))

感谢您的帮助!

1 个答案:

答案 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?))

我知道它应该是一个简单的例子,但如果可以的话,尽量坚持使用数字并避免使用字符串。