Types 如何检查元素是否属于一个子类型?
我刚刚了解了Ada中的枚举和类型,并决定编写一个小程序来练习:Types 如何检查元素是否属于一个子类型?,types,comparison,ada,Types,Comparison,Ada,我刚刚了解了Ada中的枚举和类型,并决定编写一个小程序来练习: with Ada.Text_IO; use Ada.Text_IO; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; procedure Day is type Day_Of_The_Week is (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday,
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
procedure Day is
type Day_Of_The_Week is (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
subtype Weekday is Day_Of_The_Week range Monday..Friday;
subtype Weekend is Day_Of_The_Week range Saturday..Sunday;
function is_Weekday ( dayOfTheWeek: in Day_Of_The_Week) return Boolean is
begin
if(--?--)
end is_Weekday;
selected_day_value : Integer;
selected_day : Day_Of_The_Week;
begin
Put_Line("Enter the number co-responding to the desired day of the week:");
Put_Line("0 - Monday");
Put_Line("1 - Tuesday");
Put_Line("2 - Wednesday");
Put_Line("3 - Thursday");
Put_Line("4 - Friday");
Put_Line("5 - Saturday");
Put_Line("6 - Sunday");
Get(selected_day_value);
selected_day = Day_Of_The_Week'pos(selected_day_value);
if( is_Weekday(selected_day))
Put_Line( Day_Of_The_Week'Image(selected_day) & " is a weekday." );
else
Put_Line( Day_Of_The_Week'Image(selected_day) & " is a weekday." );
end Day;
我对if语句有问题。如何检查DayOfWeek是否在Weekday子类型或weekend子类型中?是否需要
function is_Weekday ( dayOfTheWeek: in Day_Of_The_Week) return Boolean is
begin
return dayoFTheWeek in Weekday;
end is_Weekday;
另外,您希望'Val
而不是'Pos
处于
selected_day := Day_Of_The_Week'val(selected_day_value);
你可以看看第二行的单词 您不需要函数来检查这一点。在这种情况下,函数只会掩盖发生的情况:
if Selected_Day in Weekday then
do stuff..
else
do other stuff...
end if;
只是一个书呆子,但您的代码假定输入有效。IRL您应该在枚举上使用表示子句来保证范围为0-6,并获取一个整数,使用未经检查的整数类型转换,检查它是否有效,然后检查周末/工作日子类型。为什么不显式输入一周中的
天
<代码>包周中的日文本IO是新的Ada.Text IO.Enumeration IO(周中的日)编码>然后<编码>获取(所选天数);跳绳代码>