【问题标题】:lisp : how to remove a string from list of strings? [duplicate]lisp:如何从字符串列表中删除一个字符串? [复制]
【发布时间】:2015-09-06 22:18:16
【问题描述】:

我在从我使用的字符串列表中删除字符串时遇到问题

(remove "lol" '("lol" "lol2" "lol")

但它返回相同的列表。这里有什么问题?

【问题讨论】:

    标签: lisp


    【解决方案1】:

    您遇到了试图确定平等的问题。我相信remove 使用eql 作为其默认的相等测试器。不幸的是,两个字符串不是eql,除非它们实际上是同一个对象。

    试试:

    `(remove "lol" '("lol" "lol2" "lol") :test #'equal)
    

    或者,如果您知道要测试字符串,则可以将 string= 作为测试函数传递。

    【讨论】:

    • @NabilAmen 如果可行,您应该考虑接受答案。
    • 默认比较是eql是正确的,但你不应该只是相信它,而是在hyperspec中查找它。顺便说一句,Eql 是整个语言的标准默认比较,几乎没有例外。
    • @Svante 我实际上检查了 remove 是否说了任何具体的内容,但它没有,所以我选择了“好吧,默认值为 eql 并且它没有另外说,但是...... "。
    • @Vatine:好的,抱歉,你实际上必须从remove 的条目中点击两个链接,“满足测试”和“满足两个参数测试”才能到达第 17.2 章。 1,指定一般默认值。
    【解决方案2】:

    你应该关闭')' 所以写:(删除“lol”'(“lol”“lol2”“lol”)

    【讨论】:

    • 这只是一个录音错误,列表不会改变我不知道为什么
    猜你喜欢
    • 2020-06-14
    • 1970-01-01
    • 2014-01-26
    • 2020-08-13
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多