所以我有一个从文件中创建的项目列表。我能够读取文件并将项目成功放入列表中,但是我无法将这些项目转换/转换为字符串。
例如:
(print myList)
产生
'(Apple Orange banana pickle)
和
(for ([i lst])
(print i)
)
产生
'Apple'Orange'banana'pickle
不是字符串。
我真的只想要一个字符串列表,以便我以后可以操作它们。球拍文档似乎只显示如何处理字符。我该怎么做呢?谢谢你的帮助!
答案 0 :(得分:2)
使用内置map
程序和symbol->string
这一过程有一种更简单,更惯用的方式,它可以完全执行您需要的转换:
(map symbol->string '(apple orange banana pickle))
=> '("apple" "orange" "banana" "pickle")
请记住,在Scheme中,我们大多数时候都避免使用set!
等变异操作 - Scheme支持函数式编程,我们在这里构建新数据而不是修改它。
还要注意我们避免使用显式循环 - 有一些内置的过程可以用你能想象的任何方式来操作列表,对于那些罕见的情况,当我们找不到满足我们需求的过程时,我们使用递归循环。
答案 1 :(得分:0)
我想我找到了答案。我相信我列表中的项目在球拍中被称为“符号”。因此,您可以使用方法“symbol-> string”。
所以我定义了一个名为“stringList”的新列表,并执行了此操作:
;Create new list to be list of strings
(define stringList '())
;convert symbols from list into strings and add to stringList
(for ([i myList])
(set! i (symbol->string i))
(set! stringList (cons i stringList))
)
仍然希望听到任何反馈!