QUAD VI、QUAD FI及QUAD VFI的APL2等效用法是什么?
APL2下QUAD FI/QUAD VI/QUAD VFI的等效实现
你提到的QUAD FI(即⎕FI,格式化输入)、QUAD VI(即⎕VI,输入验证)、QUAD VFI(即⎕VFI,验证+格式化输入)均为早期APL(如APL\360、VS APL)的非标准系统函数,未被纳入APL2的标准函数库,因此直接调用会返回VALUE ERROR。你可以通过APL2原生系统函数组合实现等价能力,各函数的等效实现如下:
QUAD FI(格式化输入)
核心作用是按指定格式规则将字符输入转换为对应类型的结构化数据,等效自定义实现如下:
∇ R←FI(fmt;input) input←⎕ ⍝ 从会话端读取输入,处理文件时替换为⎕RF读取结果 R←(⍴fmt)⍴input ⎕ARDEC fmt ∇
调用方式和原版QUAD FI完全一致,格式控制符可直接复用旧代码的规则。
QUAD VI(输入验证)
核心作用是校验输入是否符合指定格式规则,返回验证状态+原始输入的二元组,等效实现:
∇ R←VI(fmt;input;valid) input←⎕ valid←0=⎕TC input ⎕ARDEC fmt R←valid input ∇
返回值第一个元素为1表示输入合法,为0表示输入格式不匹配,和原版返回结构一致。
QUAD VFI(验证+格式化输入)
核心作用是整合校验和格式化能力,输入合法则返回格式化后的数据,非法返回错误标识,等效实现:
∇ R←VFI(fmt;input;valid;parsed) input←⎕ parsed←input ⎕ARDEC fmt valid←0=⎕TC parsed R←(valid/parsed),~valid/'FORMAT ERROR' ∇
若你需要适配更复杂的旧代码调用逻辑,可以在上述自定义函数中增加参数分支判断,匹配原版的边缘场景返回规则。
内容的提问来源于stack exchange,提问作者Olenka
相关产品推荐
相关产品推荐

