Ada主程序代码重复优化:如何消除输出语句重复冗余问题
有两种符合要求的实现方案,都不会修改Character_Check函数的输入输出职责,同时完全消除字符串前缀的重复代码:
方案1:拆分公共输出段(无额外函数,改动最小)
直接将固定前缀You typed 单独提取输出,再根据函数返回结果输出对应布尔值的文本即可:
with Ada.Text_IO; use Ada.Text_IO; procedure TF is function Character_Check return Boolean is Check : Character; begin Get(Check); -- 可顺便简化原有冗余的if判断逻辑 return Check = 'T'; end Character_Check; begin Put("Type F or T (For False or True): "); -- 公共前缀只写一次 Put("You typed "); if Character_Check then Put("True"); else Put("False"); end if; end TF;
方案2:封装布尔值转文本工具函数(适合多场景复用)
如果项目中多处需要将布尔值转换为True/False文本,可以单独封装一个纯转换逻辑的工具函数,不会涉及任何IO操作,符合你的限制要求:
with Ada.Text_IO; use Ada.Text_IO; procedure TF is function Character_Check return Boolean is Check : Character; begin Get(Check); return Check = 'T'; end Character_Check; -- 纯转换逻辑,无IO操作,不违反限制 function Boolean_To_Display_Str(Value : Boolean) return String is begin return (if Value then "True" else "False"); end Boolean_To_Display_Str; begin Put("Type F or T (For False or True): "); -- 单句完成输出,完全消除重复代码 Put("You typed " & Boolean_To_Display_Str(Character_Check)); end TF;
内容的提问来源于stack exchange,提问作者leun
相关产品推荐
相关产品推荐

