【问题标题】:Scheme - Convert boolean to string?方案 - 将布尔值转换为字符串?
【发布时间】:2012-11-09 18:24:41
【问题描述】:

我很难找到在 Scheme 中将布尔值转换为字符串的示例。

我的问题是我使用 string-append 将几个字符串添加在一起作为调试器的一部分。 我的解决方法是检查是否等于#t,然后附加“#t”,并与#f 类似。

我的问题-Scheme 中是否有将布尔值转换为字符串的方法?像 bool->string 之类的东西?

我的代码:

(if (equal? val #t)
                       (string-append (number->string count) ":" "#t")    
                       (string-append (number->string count) ":" "#f")    )

【问题讨论】:

    标签: scheme boolean racket


    【解决方案1】:

    使用format:

    > (format "~a" #t)
    "#t"
    > (format "~a" #f)
    "#f"
    

    【讨论】:

    • 在最新版本的Racket(5.3.1)中,还可以使用~a函数:(~a #t)。你需要(require racket/format)
    • 很好,我忘了format已经做了隐式字符串端口的事情。
    【解决方案2】:

    这可能会对您有所帮助:

    (define (->string x)
      (call-with-output-string
       (lambda (out)
         (display x out))))
    

    这会将 any 对象写入字符串端口并返回其字符串值。

    > (->string #t)
    "#t"
    > (->string #f)
    "#f"
    

    【讨论】:

      【解决方案3】:
      (define (boolean-to-string val) (if val "#t" "#f"))
      
      (string-append (number->string count) ":" (boolean-to-string val))
      

      【讨论】:

        猜你喜欢
        • 2018-09-07
        • 1970-01-01
        • 2012-03-10
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多