2012-11-09 46 views
3

我有一段艰难的时间,试图找到一个将布尔转换为Scheme中字符串的例子。Scheme - 将boolean转换为字符串?

我的问题是我使用字符串追加来添加几个字符串作为调试器的一部分。 我的修复是检查是否等于#t,然后附加“#t”,并且与#f类似。

我的问题是在Scheme中将bools转换为字符串的方法吗?像bool->字符串?

我的代码:

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

回答

3

使用format

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

简单的解决方案,可以完美运行。谢谢! –

+1

在最新版本的球拍(5.3.1)中,您还可以使用'〜a'功能:'(〜a #t)'。你需要'(需要拍/格式)'。 –

+0

非常好,我忘记'格式'已经做了隐式字符串端口的事情。 –

3

这可以帮助你:

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

此写出任何对象为字符串端口,并返回其字符串值。

> (->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))