MATLAB是否存在类似C#空条件运算符的简洁实现方案?
MATLAB 实现类似C#空条件运算符的日志调用方案
下面是几种简洁优雅的实现方式,适配你的场景:
1. 短路逻辑与(最简洁写法)
利用MATLAB的&&短路特性——只有左侧表达式为真时,才会执行右侧代码。直接在日志调用前加判断:
% 针对空对象的判断 ~isempty(logger) && logger.warn('WARNING'); % 如果logger是handle类实例,用isvalid判断对象有效性 isvalid(logger) && logger.warn('WARNING');
当logger为空或无效时,右侧的日志方法调用会被直接跳过,代码不会抛出错误。
2. 哑日志对象(无侵入式复用)
如果不想在每个日志调用前加判断,可以实现一个"哑"日志类,所有日志方法都是空实现:
classdef DummyLogger < handle methods function warn(~, ~) % 空实现,不执行任何操作 end function info(~, ~) % 空实现 end function error(~, ~) % 空实现 end % 根据需要添加其他日志方法 end end
然后在获取日志单例的逻辑中,当原log4j封装的单例不存在时,返回DummyLogger的实例。这样不管有没有配置日志,logger都是可调用的有效对象,直接写logger.warn('WARNING');即可,无需额外判断,日志不存在时会静默跳过。
3. 变量存在性判断(适配未定义场景)
如果不确定logger变量是否被定义,可以结合exist函数:
exist('logger', 'var') && ~isempty(logger) && logger.warn('WARNING');
这种写法会先判断变量是否存在,再判断是否为空,最后执行日志调用,适合极端场景。
内容的提问来源于stack exchange,提问作者Severin Pappadeux
相关产品推荐
相关产品推荐

