【问题标题】:Typed Racket string->number how to convert result to integerTyped Racket string->number 如何将结果转换为整数
【发布时间】:2017-03-28 15:35:56
【问题描述】:

我正在尝试将项目从 Racket 转换为 Typed Racket,但我遇到了一些打字机制问题。

string->number 返回 (U Complex False),但我找不到任何程序将它(甚至只是一个 Complex)转换为 Integer。

一个非常简短的例子来说明我的问题:

#language typed/racket

(define die : Integer 5)

(define dlist '("1" "2" "3" "4" "5"))

(set! die (string->number (car dlist)))

感谢您的帮助!

【问题讨论】:

    标签: scheme racket typed


    【解决方案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?))
    

    我知道这应该是一个简单的示例,但请尽量坚持使用数字并避免使用字符串。

    【讨论】:

    • 感谢您的帮助。我今晚会测试它。我需要使用字符串,因为在实际程序中我接受用户输入。 (在 iPhone 上输入。抱歉格式化(
    • 工作就像一个魅力!感谢您的帮助。
    • 没问题。我应该提到,当你有类似(U Foobar False) 的东西时,这通常是有效的。您可以在guide 中阅读有关此类内容的更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2012-09-19
    相关资源
    最近更新 更多