首页

欢迎

 

Welcome

欢迎, 这是一个学习数学、讨论数学的网站.

转到问题

请输入问题号, 例如: 2512

IMAGINE, THINK, and DO
How to be a scientist, mathematician and an engineer, all in one?
--- S. Muthu Muthukrishnan

Local Notes

Local Notes 是一款 Windows 下的笔记系统.

Local Notes 下载

Sowya

Sowya 是一款运行于 Windows 下的计算软件.

详情

下载 Sowya.7z (包含最新版的 Sowya.exe and SowyaApp.exe)


注: 自 v0.550 开始, Calculator 更名为 Sowya. [Sowya] 是吴语中数学的发音, 可在 cn.bing.com/translator 中输入 Sowya, 听其英语发音或法语发音.





注册

欢迎注册, 您的参与将会促进数学交流. 注册

在注册之前, 或许您想先试用一下. 测试帐号: usertest 密码: usertest. 请不要更改密码.


我制作的 slides

Problem

随机显示问题

Problèmes d'affichage aléatoires

软件 >> Magma
Questions in category: Magma (Magma).

[Magma]属性(Attributes)

Posted by haifeng on 2011-08-13 16:09:09 last update 2011-08-13 16:34:11 | Answers (0)


介绍

对于 Magma 的任一种结构, 都可伴之某种属性. 属性其实就是一些值, 存储在结构中, 需要使用时就用其名字字段来引用它.

属性与宏包

属性的使用在 packages 中是十分普遍的.

属性分为系统预定义属性和用户自定义属性两类

系统预定义属性

系统预定义属性的值在 Magma 启动时就自动赋予了. 可以使用 AssertAttribute 或 HasAttribute 来改变系统预定义属性的值. (为了保持向后兼容, HasAttribute 在某些时候还是可以使用的.)

对于任何可以作为 AssertAttribute 或 HasAttribute 的第一个有效参数的名字, 这个名字也是某个适当的类别结构的有效属性字段. 因此我们现在使用反引号(back quote `)方法来获取属性的值, 而不再使用旧的方法. 如

> S`Name := x;

完全等同于

> AssertAttribute(S, \"Name\", x);

函数 AssertAttribute 和 HasAttribute 的第二个参数都是字符串, 因此必须用双引号括起来.

类似的, 下面的代码

> if assigned S`Name then
> x := S`Name;
> // do something with x...
> end if;

等价于

> l, x := HasAttribute(S, \"Name\");
> if l then
> // do something with x...
> end if;

注意: 当系统属性没有被设定时, 使用反引号 ` 引用它并不会触发计算其值(但相应的内在函数会计算, 如果存在的话), 反而会出现错误. 因此我们常用 assigned 来测试属性是否确实被设定了.

用户自定义属性