Ada.Strings.Fixed.Index_Non_Blank的行为

ARN*_*908 0 string ada

我在想,根据它的名字,逻辑上,这个函数将返回第一个字符的索引,而不是空格,也就是说,不是空格或制表.

不过,测试时它的一些字符串,并在它的实现寻找(文件时,A-strsea.adbGNAT 4.7.4),我意识到,实际上这个函数返回的第一个字符的索引不是一个普通的空间(ASCII 32).在我看来,这与它的名字可以设想的不一致.

那么,我在哪里可以找到此函数的预期行为(除了查看代码)?实际上,在AARMfor中Ada 2012,我只找到了原型,没有任何语义信息.

Kei*_*son 6

我同意使用"空白"一词是不恰当的.在其他地方,标准将"空白"定义为"空格或水平制表字符".

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)

其中SpaceAda.Characters.Latin_1.Space定义为' '.

标准显示Ada.Strings.Fixed没有评论的索引的规范,然后是声明的子程序的效果的描述,这一事实可能令人困惑.只需搜索文档Index_Non_Blank,并且不要假设有关它的所有信息都在一个地方.