Ada,Pascal和许多其他语言支持范围,一种子类型整数的方式.
范围是从值(第一)到另一个(最后)的有符号整数值.
实现一个在OOP中执行相同的类很容易,但我认为支持本地功能可以让编译器进行其他静态检查.
范围是从值(第一)到另一个(最后)的有符号整数值.
实现一个在OOP中执行相同的类很容易,但我认为支持本地功能可以让编译器进行其他静态检查.
我知道,不可能静态地验证一个范围中定义的变量不会“溢出”运行时,即由于输入不良,但我认为可以做一些事情.
我想到了Design by Contract方法(eiffel)和Spec#(C# Contracts),给出了一个更一般的解决方案.
有没有一个更简单的解决方案,至少在C,C#和Java编译时检查静态的外联分配?某种static-assert?
编辑:我明白“范围”可以用于不同的目的:
>迭代器
>枚举器
>整数子类型
我会专注于后者,因为Former可以很容易地以C *语言映射.
我想到一个封闭的一组值,就像音乐音量,即从1到100的范围.我想增加或减少一个值.我想要一个编译错误,以防止静态溢出,如下所示:
volume=rangeInt(0,100); volume=101; // compile error! volume=getIntFrominput(); // possible runtime exception
谢谢.
解决方法
原文地址:https://www.jb51.cc/java/121756.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。