编辑“︁
Modula-3
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
====序数类型==== [[枚举]]类型声明有如下形式:{{code|2="modula2"|1=TYPE T = {id_1, id_2, ..., id_n} }},这里的<code>id</code>是各不相同的标识符,类型<code>T</code>是<code>n</code>个值的[[全序关系|有序集合]],表达式<code>T.id_i</code>指示这个类型在递增次序下的第<code>i</code>个值,空枚举<code>{ }</code>是允许的。 [[区间|子范围]]类型声明有如下形式:{{code|2="modula2"|1=TYPE T = [Lo..Hi]}},这里的<code>Lo</code>和<code>Hi</code>是有相同的基础类型的两个序数值,<code>T</code>的值是从<code>Lo</code>到<code>Hi</code>含二者所有的值,它们必须是常量表达式,如果<code>Lo</code>超过<code>Hi</code>,则子范围是空的。 每个不同的枚举类型介入新的一组值,而子范围类型重复使用底层类型的值。例如: <syntaxhighlight lang="modula2"> TYPE T1 = {A, B, C}; T2 = {A, B, C}; U1 = [T1.A..T1.C]; U2 = [T1.A..T2.C]; (* sic *) V = {A, B} </syntaxhighlight> 这里的<code>T1</code>和<code>T2</code>是相同类型,因为它们有相同的展开定义。<code>U1</code>和<code>U2</code>也是相同的类型,因为<code>T1.C = T2.C</code>。类型<code>T1</code>和<code>U1</code>却是不同的,尽管它们包含相同的值,但是<code>T1</code>的展开定义是枚举,而<code>U1</code>的展开定义是子范围。类型<code>V</code>是第三个类型,它的值<code>V.A</code>和<code>V.B</code>无关于值<code>T1.A</code>和<code>T1.B</code>。 语言规定提供了支持[[序数]]类型的一些类型运算:对于序数类型<code>T</code>,<code>NUMBER(T)</code>返回在<code>T</code>中元素的数目,<code>FIRST(T)</code>返回<code>T</code>的最小值,<code>LAST(T)</code>返回<code>T</code>的最大值。<code>ORD(T.id)</code>将一个[[枚举]]的元素<code>T.id</code>,转换成表示它在枚举次序中所处位置的[[整数]],如果元素的类型是枚举<code>T</code>的子范围,结果是元素在<code>T</code>内的位置,而非在子范围内。<code>VAL(i, T)</code>将表示在枚举类型<code>T</code>中位置的[[整数]]<code>i</code>,转换成在这个[[枚举]]中此位置上的那个元素,如果<code>T</code>是枚举类型的子范围,结果是在源出枚举类型的位置<code>i</code>上的元素,而非在子范围内。如果<code>n</code>是类型<code>T</code>的一个[[整数]],则有[[平凡 (数学)|平凡]]的:<code>ORD(n) = VAL(n, T) = n</code>。
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息