如何将布尔值转换为字符串?使用Scheme语言。

4

我在尝试找一个将布尔值转换为字符串的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")    )
3个回答

4
这可能会对你有所帮助:
(define (->string x)
  (call-with-output-string
   (lambda (out)
     (display x out))))

这个函数将任何对象写入字符串端口并返回其字符串值。

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

4
使用 format:
> (format "~a" #t)
"#t"
> (format "~a" #f)
"#f"

1
在最新版本的Racket(5.3.1)中,您还可以使用~a函数:(~a#t)。 您需要(require racket/format) - Asumu Takikawa
非常好,我忘记 format 已经做了隐式的字符串端口处理。 - C. K. Young

3
(define (boolean-to-string val) (if val "#t" "#f"))

(string-append (number->string count) ":" (boolean-to-string val))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接