c++ - 将 Scheme 转换为 C++
问题描述
我得到了一个任务,我必须将一个 Scheme 函数转换为一个 C++ 函数。这是Scheme函数:
(DEFINE someFunction
(LAMBDA (n)
(IF (>= n 0)
n
(- 0 n))))
如果我错了,请纠正我,但 DEFINE 将名称 , 绑定someFunction
到 LAMBDA 表达式 , n
。如果n
大于或等于 0,则n
简单地返回。否则,0 - n
返回。
这是我将其转换为 C++ 时的想法:
int someFunction() {
int n;
if (n >= 0)
return n;
else
return (0 - n);
}
我做对了吗?任何提示都会有所帮助!我想知道我做错了什么,所以不要退缩。
解决方案
您错过了一个问题:n
lambda 表达式中的 是一个函数参数。在您的 C++ 代码中,您将其声明为局部变量(未初始化,因此具有未定义的值)
更好的解决方案是:
int someFunction(int n) {
if (n >= 0)
return n;
else
return (0 - n);
}
推荐阅读
- sql - 在更新之前通过修改数据从另外两个更新主表
- java - 为下拉菜单创建 Angular 服务
- nativescript - 如何使用 NativeScript 切换 UITabBar 半透明属性?
- mongodb - MongoDB:按索引删除数组元素,操作顺序?
- javascript - 汇总具有相同属性名称的对象的值
- c# - 如何测试类型是否可实例化?
- ios - 如何在 iOS 应用程序中有效地实现跳过逻辑分支?
- java - 我们可以使用用户触摸输入进行操作吗
- java - 如何将 TableRow(代码生成的)表的内容与字符串进行比较?
- codeigniter - 在codeigniter中加载页眉和页脚视图的好方法是什么?