import - 岩浆的内在定义
问题描述
我已经使用Magma几个星期了,一切都很好,除了一件事:我无法定义自己的内在函数。我没有找到很多学习语言的资源(也许我无法搜索......),所以我尝试了很多东西,现在,我陷入了一个看似简单的事情:我有一个f.m
文件包含以下代码:
freeze;
a := 1;
function b(n);
return n+1;
end function;
intrinsic c(n::RngIntElt) -> RngIntElt
{meh}
return n+1;
end intrinsic;
在 Magma 控制台中,在与此文件相同的文件夹中,我有以下内容:
> Attach("f.m");
> import "f.m": a,b,c;
> a;
1
> b(1);
2
> c(1);
>> c(1);
^
Runtime error: Symbol 'c' of package "f1.m" not found
我真的不明白我做错了什么,有人可以启发我吗?
解决方案
好的,经过一些阅读结束实验后,我不需要c
在附加后导入f.m
. 内部函数会自动加载。这是与必须显式导入的包文件中定义的函数和变量的重要区别。由于这给我带来了一些麻烦,我仍然会在解决方案中上传这个问题。
一张图片值一千字,要完成这项工作,只需在控制台中输入以下内容:
> Attach("f.m");
> import "f.m": a,b;
> a;
1
> b(1);
2
> c(1);
2
或者换句话说,如果你不需要函数或变量,就不要导入任何东西。
推荐阅读
- vue.js - shallowReadonly 和用反应对象计算之间的区别 (Vue)
- javascript - 为什么添加onClicked监听器的位置会影响代码的运行速度?
- android - 屏幕旋转时如何加载另一个用户界面?
- python - 没有名为“文件夹名称”的模块
- c# - C# 和 Minecraft 服务器启动
- javascript - 谷歌应用程序脚本在它应该执行时执行两次函数
- c - 使用 VS Code 在 WSL 中调试 C 代码时出现问题
- java - 为什么Android中View.class的所有方法总是抛出异常
- git - 防止 git commit --amend 尝试修改已提交的更改?
- c - C 编译错误:“输入末尾的预期声明或语句”