我正在尝试返回一个全局变量的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;
这里是函数中使用的"获取"=
procedure Get (Item : out String);
现在,如果我在一个过程中使用fonction,它会编译但是=
在启动时,没有得到执行,程序"创建"一个"跳过"线!!?
那么,是否可以使用此过程获取函数?
你如何调用包含它的函数?
如果您调用该过程Get(Item : out String)
,则您阅读的字符数必须为20个字符.
如果要使用该函数get
,则需要使用其值初始化变量,或将其作为参数传递.例如
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而不是读取任何内容,这可能是因为你之前已经读过一些输入,并且在输入中留下了换行符/行尾标记.如果您阅读数字,这通常会发生.
例如,输入是
34\nThe next line\n
如果你读了一个整数,文件指针会显示你在......
34\nThe next line\n ..^
然后你要求a get_line
,你最终只会读到行的末尾(你现在所在的位置)并且你将有一个空字符串,而不是读取下一行.
解决方案是skip_line
每次获得后都有.所以
get(number); skip_line; declare input : string := get_line; begin ...