我在想,根据它的名字,逻辑上,这个函数将返回第一个字符的索引,而不是空格,也就是说,不是空格或制表.
不过,测试时它的一些字符串,并在它的实现寻找(文件时,A-strsea.adb的GNAT 4.7.4),我意识到,实际上这个函数返回的第一个字符的索引不是一个普通的空间(ASCII 32).在我看来,这与它的名字可以设想的不一致.
那么,我在哪里可以找到此函数的预期行为(除了查看代码)?实际上,在AARMfor中Ada 2012,我只找到了原型,没有任何语义信息.
我同意使用"空白"一词是不恰当的.在其他地方,标准将"空白"定义为"空格或水平制表字符".
AARM确定了以下行为Ada.Strings.Fixed.Index_Non_Blank:
function Index_Non_Blank (Source : in String;
From : in Positive;
Going : in Direction := Forward)
return Natural;
Run Code Online (Sandbox Code Playgroud)
返回
Index (Source, Maps.To_Set(Space), From, Outside, Going);
function Index_Non_Blank (Source : in String;
Going : in Direction := Forward)
return Natural;
Run Code Online (Sandbox Code Playgroud)
返回
Index(Source, Maps.To_Set(Space), Outside, Going)
其中Space被Ada.Characters.Latin_1.Space定义为' '.
标准显示Ada.Strings.Fixed没有评论的索引的规范,然后是声明的子程序的效果的描述,这一事实可能令人困惑.只需搜索文档Index_Non_Blank,并且不要假设有关它的所有信息都在一个地方.