我正在编写一系列与服务器通信的MATLAB函数urlread.此程序包中用于进行此调用的每个函数都需要身份验证username和key.
我宁愿不要求用户在传递username和key调用每一个功能的时候.相反,我更喜欢有一个signin(username, key)函数来设置/保存这些变量,使得这个包中的每个函数都可以调用.
我现在的解决方案是signin.m保存username和key临时文件,并修改finish.m以在MATLAB关闭时擦除此临时文件.包中的每个函数都将从该临时文件加载这些变量.但是,如果有人强行退出MATLAB,这个临时文件将不会被删除(对吗?).
另一种解决方案是signin保存username和key作为全局变量.但是,如果用户调用clear all,这些变量将被删除工作空间,用户将需要signin再次调用(这是一个麻烦).
有没有办法设置全局的"会话"变量,而不是用clear all命令删除?还有其他建议吗?
小智 5
您可以考虑MATLAB的首选项功能.它适用于函数setpref,addpref,rmpref和getpref.我在一些应用程序中使用这些工具,它们工作得很好.
一个小问题是如果你经常调用这些工具.由于getpref使用磁盘文件中的读取来访问prefs,因此它没有它可能的那么快.因此,如果由于频繁调用而必须具有绝对最大速度,那么持久性变量的混合似乎对我有效.因此,我有一个用于访问相关首选项的函数.它包含持久变量中的pref.如果这是第一次查询pref,那么该持久变量将为空,所以我执行getpref调用来填充它.(这是一个很好的功能,因为pref将在MATLAB会话中保持不变.)当您需要更改变量时,也要执行setpref.