如何在Racket中将数字添加到字符串?

12

Python : xx = "p" + "y" + str(3) => xx == "py3"
如何使用Racket获得相同的结果?

(string-append "racket" (number->string 5) " ")  

在Racket中是否有另一种类似于上面Python示例的方法,可以将数字附加到字符串末尾?


3
你尝试过你的Python示例吗? - Mark Tolonen
我尝试运行代码时出现了 TypeError: cannot concatenate 'str' and 'int' objects 的错误。在这个问题之前,我一直认为 Python 会自动将数字转换为字符串。 - book-life
2个回答

13
$ racket
Welcome to Racket v5.3.5.
-> (~a "abc" "def")
"abcdef"
-> (~a "abc" 'xyz 7 )
"abcxyz7"
-> 

11

Python自动将数字转化为字符串,而Racket不会这么做。 无论是Racket还是Python都不会将数字强制转换为字符串。这就是为什么你必须在Racket中显式使用number->string而在Python中使用 str()"p" + str(3))。你也可以发现,对于一些使用Python的%运算符的情况,Racket的format函数表现类似:

# Python
"py %d %f" % (3, 2.2)

;; Racket
(format "rkt ~a ~a" 3 2.2)

但据我所知,Racket和Python都没有类似于"foo" + 3这样的功能。

[根据我的错误进行了编辑。我混淆了Python行为和JavaScript,被OP误导了]


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