我想创建一个看起来像这样的常量字符串:
My_Null_String : constant String(1 .. 50) := "NULL***********************";
所有* s都是Ascii.Nul
个字符。无法通过others
关键字执行此操作,如:
My_Null_String : constant String(1 .. 50) := "NULL" & (others => Ascii.Nul);
是否有一个优雅的解决方案,不会涉及一大块Ascii.Nul
个字符来填写我的其余字符串?
由于
答案 0 :(得分:3)
My_Null_String : constant String(1 .. 50) := "NULL" & (5 .. 50 => ASCII.NUL);
原始尝试的问题在于评估
(others => ASCII.NUL)
程序必须有办法确定界限。它没有,并且它不够聪明,无法进行计算,例如确定这是通过连接两个字符串形成的,因此我们可以确定边界应该是第一个字符串后剩下的任何内容被评估。语言必须为此特殊情况(数组连接)做一个特殊情况,并且它不会。
答案 1 :(得分:1)
怎么样:
My_Null_String : constant String(1 .. 50) := ('N','U','L','L', others => ASCII.Nul);