我试图找出将使用Free Pascal case语句的示例传递给简单if语句的正确方法。
使用案例
begin usingCaseStatements;
var
user_age : Integer;
begin
Writeln('Please enter your age');
Readln(user_age);
case user_age of
1..12 : Writeln('You are too young');
else
Writeln('Invalid input');
end;
Writeln('Please any key to terminate the program');
Readln();
end.
-----使用if语句--------
begin usingCaseStatements;
var
user_age : Integer;
begin
Writeln('Please enter your age');
Readln(user_age);
if user_age in 1..12 then
Writeln('You are too young')
else
Writeln('Invalid input');
Writeln('Please any key to continue');
Readln();
end.
我试过替换if语句snipet中的“in”而没有任何运气
有一次我尝试做if (user_age = 1..12) then
并且它只给了我一个错误,编译器声明该语句正在等待')',但它找到了..而不是。我对FPC非常陌生,所以非常感谢帮助和提示。
答案 0 :(得分:6)
IN 测试集合,而不是范围。正如TLama已经评论过的那样,您可以使用[1..12]定义包含范围的集合。
大多数PC帕斯卡仅支持最多256个元素的设置大小,因此josifoski推荐的解决方案将更长期实用。
答案 1 :(得分:3)
if(user_age >=1
)和(user_age <=12
)然后
答案 2 :(得分:1)
只是为了好玩。它适用于FPC 2.7.1,但我不知道它是否适用于稳定的2.6.4
program project1;
{$modeswitch typehelpers}
type
TIntegerHelper = type helper for Integer
function IsInRange(const ALow, AHigh: Integer): Boolean; inline;
end;
function TIntegerHelper.IsInRange(const ALow, AHigh: Integer): Boolean; inline;
begin
Result := (Self >= ALow) and (Self <= AHigh);
end;
var
i: Integer;
begin
i := 8;
Writeln(i.IsInRange(7, 9));
Writeln(i.IsInRange(8, 8));
Writeln(i.IsInRange(2, 3));
Readln;
end.
输出:
TRUE
TRUE
FALSE