scheme - 调试接受字符串的方案函数
问题描述
我正在研究一个使用两个单词并检查它们的长度是否相同的 Scheme 函数。如果它们是,它应该输出“相同的长度”,如果它们的长度不同,它应该用它们的长度指定更长和更短的字符串。所以我尝试了
(define (strings x y)
(if (= (string-length x)(string-length y))
display "same length"
(string-length x)(string-length y)))
但它说两个字符串长度是相同的长度,即使它们不是。如果我将括号显示为“相同长度”,它也只会打印 x 的字符串长度。我不确定如何修复它。
解决方案
您格式化代码的方式与 IDE 的功能不一致。例如。将您的代码粘贴到 DrRacket 中并按下CTRL+i
给我:
(define (strings x y)
(if (not (= (strings-length x)(strings-length y))
(display "same length")) ; this is second argument to not
(if (> (strings-length x)(strings-length y))
((strings-length x)(strings-length y)))))
因此,第一次if
调用not
带有两个参数,因为您缺少行尾的结束语。您还缺少 else 子句,这样错误的测试就会将结果留给实现。
基本上你在这之后:
(if (= (string-length x) (string-length y))
what-to-do-when-true
what-to-do-when-false)
请注意,您不需要第二个if
,因为您正在测试与第一个相反的内容,并且保证最终会出现在代码中what-to-do-when-false
。另请注意,我已将其删除,not
因此您只需切换顺序即可。如果您愿意,可以重新添加not
,但不要忘记括号。
推荐阅读
- java - android底页中的RecyclerView Checkbox状态
- linux - 使用 tar 命令在 tar 中转换目录结构的方法有哪些
- node.js - 添加变量以查询graphql
- reactjs - 如何使用 useEffect 将 API 数据设置为数组
- jenkins - 没有 JobDSL 的 Jenkins 嵌套分类
- c++ - 我对 c++ 还很陌生,我尝试过创建一个日志类,但是遇到了多个错误并且不知道如何修复。我试着看教程但是
- swift - 如何使用 onDisconnectUpdateChildValues 更新 Firebase 上的数组
- android - 如何使用 react-native-ble-plx 打开手机蓝牙?
- c# - 如何从集合 C# 泛型中推断类型
- c# - 更改 PDF 文件的所有字体 (iTextSharp)