方案-eq?比较2个字符串?
我的程序有问题。
我有一个比较两个字符串的条件:
(if (eq? (exp1) (exp2)))
当 exp1 给我一个字符串,而 exp2 给我一个字符串。可以肯定的是,当我更改“eq?”时到“=”,它给了我下一个问题:
=:需要类型
;作为第二个 论点,给出:即;其他论点 是:即。
当我运行程序时,函数不输入“if”函数中的第一个表达式,然后输入第二个表达式(意味着条件为假)。
我能做些什么?
谢谢。
I have a problem in my program.
I have a condition that compare between 2 string:
(if (eq? (exp1) (exp2)))
When exp1 give me a string, and exp2 give me a string. To be sure, when I change the "eq?" to "=", it give me the next problem:
=: expects type <number> as 2nd
argument, given: ie; other arguments
were: ie.
When I'm running the program, the function doesnt enter to the first expression in the "if" function, and enter to the second one (meaning the condition is false).
What can I do?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据等价谓词部分R6RS,您应该使用
equal?
,而不是eq?
,它会测试它的两个参数是否完全相同的对象(而不是两个具有相同对象的对象) 价值)。正如 knivil 在评论中指出的那样, 字符串 部分还提到了
string=?
,专门用于字符串比较,这可能避免进行类型检查。According to the Equivalence predicates section of R6RS, you should be using
equal?
, noteq?
, which instead tests whether its two arguments are exactly the same object (not two objects with the same value).As knivil notes in a comment, the Strings section also mentions
string=?
, specifically for string comparisons, which probably avoids doing a type check.我为这个问题写了一个小辅助函数。
I wrote a little helper function for this problem.