程序获取(项目:输出字符串); (在函数中)
procedure Get (Item : out String); ( in a Function)
我正在尝试 return 全局变量的字符串值,并希望在稍后的过程中使用使用它的函数。
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);
现在,如果我在过程中使用该函数,它会编译但 =
启动时,没有执行 get,程序 "create" 有 "skip" 行 !!?
那么,是否可以使用此程序获取函数??
在 ??
之后如何调用包含它的函数?
如果您调用过程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 而没有读取任何内容,这可能是因为您之前已经读取了一些输入,并且在输入中留下了 newline/end 行标记。如果您阅读数字,这种情况经常发生。
例如输入是
34\nThe next line\n
如果您读取一个整数,文件指针将显示您在...
34\nThe next line\n
..^
然后你请求一个 get_line
,你最终只会读到行尾(你当前所在的位置),你将得到一个空字符串,并且没有阅读下一行。
解决办法是在每次get之后有一个skip_line
。
所以
get(number); skip_line;
declare
input : string := get_line;
begin
...
我正在尝试 return 全局变量的字符串值,并希望在稍后的过程中使用使用它的函数。
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);
现在,如果我在过程中使用该函数,它会编译但 =
启动时,没有执行 get,程序 "create" 有 "skip" 行 !!?
那么,是否可以使用此程序获取函数??
在 ??
之后如何调用包含它的函数?如果您调用过程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 而没有读取任何内容,这可能是因为您之前已经读取了一些输入,并且在输入中留下了 newline/end 行标记。如果您阅读数字,这种情况经常发生。
例如输入是
34\nThe next line\n
如果您读取一个整数,文件指针将显示您在...
34\nThe next line\n
..^
然后你请求一个 get_line
,你最终只会读到行尾(你当前所在的位置),你将得到一个空字符串,并且没有阅读下一行。
解决办法是在每次get之后有一个skip_line
。
所以
get(number); skip_line;
declare
input : string := get_line;
begin
...