在计算表达式之前,需要替换表达式中使用的变量的值。这些存储在符号表中。每当解释器启动一个新函数时,它都会保存当前符号表并创建一个新的符号表,并使用函数参数列表和几个预定义的变量对其进行初始化,例如函数输入变量数
。函数内的表达式使用新的符号表。
有时你想写一个函数,这样当你调用它时,它会在你自己的上下文中修改变量。这允许您使用按名称传递的函数样式,这类似于在C等编程语言中使用指针。
考虑一下你可能会如何写作拯救
和加载
asm文件。例如
函数create_data x=linspace(0,10,10);y=sin(x);保存mydata x yendfunction
具有伊瓦林
,你可以写拯救
如下所示:
函数保存(文件,名称1,名称2)f=打开保存文件(文件);save_var(f,name1,evalin(“caller”,name1));save_var(f,name2,evalin(“caller”,name2));结束函数
在这里呼叫者是创建数据
函数和名称1
是字符串x
,简单地计算为的值x
.
稍后您希望从中加载回值mydata
在不同的背景下:
函数process_data加载mydata。。。做工作。。。结束函数
具有assignin
,你可以写加载
如下所示:
函数加载(文件)f=open_load_file(文件);[名称,val]=加载_var(f);assignin(“呼叫者”,名称,val);[名称,val]=加载_var(f);assignin(“呼叫者”,名称,val);结束函数
在这里呼叫者是进程数据
作用
您可以在命令提示符下使用上下文设置和使用变量基础而不是呼叫者’.
这些函数在实践中很少使用。一个例子是失败密码’, ‘图案’)
计算的函数密码,并检查它生成的错误消息是否与给定的模式匹配。其他示例,例如拯救
和加载
用C++编写,其中所有Octave变量都在呼叫者上下文和伊瓦林
不需要。
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号