我试图返回一个全局变量的String值,并希望稍后在一个过程中使用使用它的函数。
function get_name return String
is begin
Put_line("Your name?");
Get(name); -- name is in "globals"
put(name);
return name;
end get_name;
包文件=
package globals
is
name : String(1..20) ;
end globals;
这里" Get"在函数=
中使用 procedure Get (Item : out String);
现在,如果我在一个过程中使用fonction,它会编译但是
启动时,没有正在执行,程序"创建" a"跳过"线!!?
那么,是否可以使用此过程获取函数??
如何调用包含它的函数?
答案 0 :(得分:6)
如果您致电程序Get(Item : out String)
,则您阅读的字符数必须为20个字符。
如果要使用函数get
,则需要使用其值初始化变量,或将其作为参数传递。 e.g。
x : string := get_line; -- functional version that will read an entire line
或
put(get_line); -- read and entire line, pass it immediately to a procedure
至于为什么你的输入跳过get而不是读取任何内容,这可能是因为你之前已经读过一些输入,并在输入中留下了换行符/行尾标记。如果您阅读数字,通常会发生这种情况。
e.g。输入是
34\nThe next line\n
如果读取整数,文件指针将显示您在......
34\nThe next line\n
..^
然后你要求get_line
,你最终只会读到行的末尾(你当前所在的位置)并且你将有一个空字符串,而没有读过下一行
解决方法是在每次获取后获得skip_line
。
所以
get(number); skip_line;
declare
input : string := get_line;
begin
...