避免警告“非依赖属性的设置方法不应访问...”

2023-11-29

我有一个类,它有一些属性,并且有 2 个相关,在示例中称为param1, param2。他们是独立的,只是受到约束。param2必须一样大或大于param1并且必须始终存在,如果param1做。有问题的代码类似于:

    function set.param1(obj, input)
        disp('setting param1')
        obj.param1 = input;
        if (isempty(obj.param2) || obj.param2 < obj.param1) % Warning on param2
           obj.param2 = obj.param1; % Warning on param2
        end
    end

类似的代码为set.param2。 代码工作正常,我看不出有更好的方法来做到这一点。问题 - 它产生警告“设置方法......”,如标题中提到的。由于缺乏更好的解决方案,我压制了他们。 有没有更好的方法来实现此功能并且没有警告?显然不是像隐藏函数那样的黑客“解决方案”SetParam2:

function SetParam2(obj, input)
   obj.param2 = input;
end

这让编辑感到困惑,但它并没有抱怨。


您可以使用两层属性

  • 一层是暴露的并且Dependent
  • 一层是私有的,实际存​​储值

文档中使用了类似的技术:避免属性初始化顺序依赖.

classdef TestClass < handle  
    properties (Access = private)
        privateParam1;
        privateParam2;
    end

    properties (Dependent)
         param1;
         param2;
    end

    methods
        function p1 = get.param1(obj)
            p1 = obj.privateParam1;
        end

        function p2 = get.param2(obj)
            p2 = obj.privateParam2;
        end

        function set.param1(obj, input)
            obj.privateParam1 = input;
            if (isempty(obj.privateParam2) || obj.privateParam2 < obj.privateParam1)
                obj.privateParam2 = obj.param1; 
            end
        end

         function set.param2(obj, input)
            if (~isempty(obj.privateParam1) && obj.privateParam1 > input)
                obj.privateParam2 = obj.privateParam1;
            else
                obj.privateParam2 = input;
            end
         end
    end
end

这里的技巧是:privateParam1 and privateParam2存储两个值。 get 和 set 仅针对公开的属性实现param1 and param2: the get仅返回内部属性并在set它们都可以在没有分析器警告的情况下使用,因为它们被标记为Dependent.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

避免警告“非依赖属性的设置方法不应访问...” 的相关文章

  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • Matlab 字段名索引[重复]

    这个问题在这里已经有答案了 所以我有一个包含多个表的元胞数组 我试图访问表的第一个列名称 c table1 table2 table3 以下两行都给了我错误 fieldnames c 1 1 fieldnames c 1 1 Error i
  • 是否可以在 Python 中子类化 Lock() 对象?如果没有,还有其他方法来调试死锁吗?

    所以 我有一个多线程Python程序 它目前正遭受死锁 我打算通过子类化 threading Lock 对象来记录锁获取 import traceback class DebugLock threading Lock def acquire
  • getter 和 setter 的目的? [复制]

    这个问题在这里已经有答案了 可能的重复 公共数据成员与 Getters Setters https stackoverflow com questions 2977007 public data members vs getters set
  • 如何在 Matlab 中将数组打印到 .txt 文件?

    我才刚刚开始学习Matlab 所以这个问题可能非常基本 我有一个变量 a 2 3 3 422 6 121 9 4 55 我希望将值输出到 txt 文件 如下所示 2 3 3 422 6 121 9 4 55 我怎样才能做到这一点 fid f
  • 在 Matlab 中高效获取像素坐标

    我想在 Matlab 中创建一个函数 给定一个图像 该函数将允许人们通过单击图像中的像素来选择该像素并返回该像素的坐标 理想情况下 人们能够连续单击图像中的多个像素 并且该函数会将所有相应的坐标存储在一个矩阵中 有没有办法在Matlab中做
  • 抽象类、接口、mixins

    有人可以向我解释一下两者之间的区别吗抽象类 接口 and mixins 我之前在代码中使用过它们 但我不知道技术差异 抽象类 抽象类是不被设计为实例化的类 抽象类可以没有实现 部分实现或全部实现 抽象类旨在允许其子类共享公共 默认 实现 抽
  • PHP usort() 期望参数 2 是一个有效的回调,而不是在类中

    我有一个问题 usort 不喜欢第二个参数 排序函数 我在课堂上看到很多关于这是一个问题的问题 答案是传递一组array this functionName 但就我而言 这是行不通的 该脚本不是一个类 但我收到此错误 PHP Warning
  • Objective-C 继承中@synthesize/@property 的使用

    如果您有一个带有实例变量 foo 的类 A 该类具有 property synthesize 指令 并且类 B 继承自类 A 那么它是否还需要 property synthesize foo 我问的原因是因为当我尝试使用 B 类的 foo
  • VB.NET 中的“阴影”与“覆盖”

    这两个关键词有什么意义Shadows http msdn microsoft com en us library 1h3wytf6 aspx and 覆盖 http msdn microsoft com en us library k777
  • 如果我们在实体类的getter和setter中添加逻辑是不是不好的设计

    JAVA 8 我有一个 POJO 类 class User private String name private String password Getters Setters 我将使用它作为实体类 在 getter setter 中pa
  • 警告:忽略使用属性 warn_unused_result 声明的“realloc”的返回值

    我很好奇 我正在编程C在 PuTTy 上 有谁知道我如何摆脱这个警告 警告 忽略使用属性 warn unused result Wunused result realloc strp gt data nbytes 声明的 realloc 的
  • 如何使用 Ruby 2.7.0 修复 Rails 的警告消息

    有没有人解决这个问题Ruby 2 7 0 I used rbenv并安装了 Ruby v2 7 0 然后使用创建了一个 Rails 项目Rails v6 0 2 1 目前 通过运行之一 rails s rails s u puma rail
  • 覆盖默认标识符生成策略对关联没有影响

    交响乐 2 7 2 学说 ORM 2 4 7 MySQL 5 6 12 PHP 5 5 0 我有一个具有自定义 ID 生成器策略的实体 它工作完美 在某些情况下 我必须使用 手工制作 的 ID 来覆盖此策略 当主实体在没有关联的情况下被刷新
  • 如何只获取父类对象的属性

    我有两节课 class Parent object def init self id name self id id self name name self parent vars id name make a copy def print
  • 如何在 MATLAB 中绘制 3D 曲面图?

    我有一个像这样的数据集 0 1 0 2 0 3 0 4 1 10 11 12 13 2 11 12 13 14 3 12 13 14 15 4 13 14 15 16 我想在 matlab 中绘制 3D 曲面图 使列标题位于 y 轴 行标题
  • MATLAB 中的霍夫变换

    有谁知道如何使用霍夫变换来检测二值图像中最强的线 A zeros 7 7 A 6 10 18 24 36 38 41 1 使用 rho theta 格式 其中 theta 以 45 为步长 从 45 到 90 以及如何在 MATLAB 中显
  • 从 Robot Framework 访问 python 类的变量

    我有一个 python 文件 例如 Animals py 在里面我定义了 3 个不同的类 如下所示 Animals py class Animal listAnimal dog cat lt def init self Animal con
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 检测数据集中线性行为的算法

    我已经发布了一个关于对数据集的一部分进行多项式拟合的算法 https stackoverflow com q 17595932 2320757前一段时间收到一些建议去做我想做的事 但我现在面临另一个问题 我尝试应用答案中建议的想法 我的目标

随机推荐

  • Perl 正则表达式的“o”修饰符是否仍然提供任何好处?

    过去人们认为在 Perl 正则表达式末尾包含 o 修饰符是有益的 目前的Perl 文档甚至似乎没有列出它 当然不是在perlre 的修饰符部分 现在有什么好处吗 It is如果没有其他原因 出于向后兼容性的原因 仍然被接受 正如 J A F
  • R 中的运算符重载和类定义:使用不同的基本字段/语料库

    我用的是 领域 这个词在数学意义上 基础字段 语料库R已经使用的包括实数和复数 我有兴趣允许一些其他基础字段 语料库 例如F 这是以 5 为底的模算术 为此 我需要 定义一个新的数据类型 重载相关运算符 也许还有更多 也许还有别的东西 例如
  • 删除带有感叹号和反引号的数据库

    我正在尝试删除其中包含特殊字符 的数据库 MySQL test gt show databases Database d1 d2 db1 select oops MySQL test gt drop database db1 select
  • 从 Python 访问 Microsoft 自动化对象

    我有一组宏 已将其转换为 Excel 中的加载项 这些宏允许我与另一个程序进行交互 该程序具有所谓的 Microsoft 自动化对象 可以对其他程序的操作进行一些控制 例如 我在加载项中有一个筛选工具 可以筛选其他程序提供的列表以匹配 Ex
  • 当前上下文中不存在名称“WM_DEVICECHANGE”

    我正在尝试检测 USB 到达事件 我试图覆盖wndproc 获取我的消息 但我遇到了 Windows 消息错误 错误是 The name WM DEVICECHANGE does not exist in the current conte
  • 基于“openjdk:8-jdk-alpine”为 Spring Boot 应用程序构建 docker 映像时,无法运行“./mvnw clean install”

    我想使用 Docker 容器内的 spring io starter 提供的 Maven 包装器构建一个 Spring Boot 应用程序 我的 Dockerfile 是 FROM openjdk 8 jdk alpine install
  • 从 RDD 访问 KafkaOffset 时出现异常

    我有一个来自 Kafka 的 Spark 消费者 我正在尝试管理一次性语义的偏移量 但是 在访问偏移量时 它会引发以下异常 java lang ClassCastException org apache spark rdd MapParti
  • C# 文本框禁用快捷键

    i use a textbox inside my windows form application and i need to disable the shortcuts CTRL I and CTRL H I tried many di
  • Filter对象没有pop属性

    colorramps re split ramp 0 9a fA F 6 rampend 0 9a fA F 6 message colorramps reverse if len colorramps gt 1 starttext col
  • Oracle 数据库测试挑战 - 比较架构数据

    想知道是否有人可以帮助我在这个挑战中找到正确的方向 或者告诉我我很想通过 sql 尝试这个 如果 sql 太具有挑战性 是否有任何免费或廉价的工具可以帮助我自动化执行此操作 我正在测试新旧 Oracle 数据库之间的一些数据 我想做的是能够
  • 有没有办法克隆 tkinter 小部件?

    我正在尝试创建小部件网格 这个小部件网格一开始是标签 告诉我它们的坐标 然后我有一个将替换它们的按钮的起点和终点的列表 假设我有一个从 0 0 到 0 2 的按钮 我从该位置删除标签 并在此处放置一个具有正确行距的按钮 如果一个按钮将替换另
  • Apache Kafka 中的分区数量是否有上限

    我读到它是 10000 但我想知道的是这个限制是针对 1 个代理还是整个集群 我想要一个带有事件名称的主题并捕获用户的所有事件流 现在 我希望在该特定用户的事件将发生的专用分区上记录每个用户的活动 现在 如果用户数量超过 10000 该怎么
  • 在两个微服务之间共享域模型的最佳实践

    是否有关于如何在两个微服务之间共享域模型的最佳实践或指南 我有一个微服务 1 它提供与所有 CRUD 资源 例如订单 交互的端点 另一个微服务 2 对资源 订单 执行特定的非 CRUD 任务 微服务 2 几乎需要所有订单属性来执行其操作 在
  • 视觉代码 - 排除具有多个条件的文件

    有一个选项可以使用 when 关键字排除生成的文件 例如 files exclude js when basename ts 我还想排除从 tsx 文件生成的 js 文件 两者都不 js when basename ts basename
  • C#:FTP上传缓冲区大小

    我有FTP上传功能 但有件事我想问一下 这是缓冲区大小 我将其设置为 20KB 这意味着什么 如果我增加 减少它 会有什么不同吗 private void Upload string filename FileInfo fi new Fil
  • 使用 Thrust::transform 对推力:​​:复杂类型进行操作

    我正在尝试使用thrust transform对类型向量进行操作thrust complex
  • Microsoft.Speech SpeechRecognitionEngine.setInputToDefaultAudioDevice() 方法抛出 System.InvalidOperationException

    我正在使用 Microsoft Speech 不是 System Speech 并且尝试将音频流的输入设置为我的麦克风 这是默认音频设备 但它引发了异常 Microsoft Speech dll 中发生 System InvalidOper
  • jquery 函数不适用于异步加载的 dom 元素

    I wrote jQuery事件处理程序开启DOM尚未出现在页面中但可能会异步加载到页面中的元素 我观察到这些事件处理程序似乎没有意识到一些新元素已添加到DOM并且他们需要在触发时对其采取行动 我的观察正确吗 我如何实现这个功能 如果您希望
  • 为什么 .length 不是一个需要 () 的方法

    JavaScript中为什么关键字长度不需要 似乎所有其他函数 例如 splice shift 都需要括号 我们只能推测为什么它被设为普通属性而不是方法 但是 那 length是每个字符串 数组的常量值 它在计算时不会修改任何内容 它不像方
  • 避免警告“非依赖属性的设置方法不应访问...”

    我有一个类 它有一些属性 并且有 2 个相关 在示例中称为param1 param2 他们是独立的 只是受到约束 param2必须一样大或大于param1并且必须始终存在 如果param1做 有问题的代码类似于 function set p