草庐IT

Getters-Setter

全部标签

ruby - 为 setter 方法指定默认值

考虑以下代码:classDummydefattr=(arg=10)@attr=argenddefattr2=(arg=20)@attr2=20endend;d=Dummy.new;d.attr=();d.attr2=();d=>#attr=方法似乎丢弃了默认参数值并将nil分配给实例变量,但在attr2=中分配显式值有效方法。为什么会这样?编辑:我应该用更清楚的方式表达自己。显式赋值显然适用于attr2=方法。这只留下一个解释——setter方法丢弃默认参数值。为什么会发生这种丢弃? 最佳答案 以=结尾的方法不是普通方法,因为它们被

ruby - 为什么私有(private) setter 的行为与其他私有(private)方法不同?

这是一个我似乎无法解释的有趣案例。看起来私有(private)setter是“有点”私有(private)的,但有时也有异常(exception)。常规的私有(private)方法似乎与私有(private)setter的行为不同:classTestClassdefdoself.foo=:bar#fineself.baz#errorendprivatedeffoo=(other)@foo=otherenddefbazendendTestClass.new.do尽管在显式self上被调用,但上面的代码设置@foo很好。然后调用#baz失败,因为#baz是私有(private)方法。这是怎

ruby-on-rails - 包含 InstanceMethods 模块时覆盖 attr_accessor 的 setter 方法

我有一个ActiveRecord扩展(缩写):moduleHasPublishDatesdefself.included(base)base.send:extend,ClassMethodsendmoduleClassMethodsdefhas_publish_dates(*args)attr_accessor:never_expireincludeInstanceMethodsendendmoduleInstanceMethodsdefnever_expire=(value)@never_expire=ActiveRecord::ConnectionAdapters::Column.

c++ - 我应该总是使用 noexcept 作为 setter/getter 吗?

我应该在C++11中始终对getter使用noexcept方法修饰符吗?我的意思是简单的getter,只返回成员。至少在我所有的setter/getter中,我这里不可能有一个异常(exception)被抛出。一个缺点是getter过于冗长:conststd::string&getName()constnoexcept{returnname;}Stroustrup书中指出的好处是编译器可能会在这里和那里做一些优化。 最佳答案 noexcept是一个很难收回的promise。例如,您可以稍后做一些简单的事情,例如将返回类型更改为std

c++ - 我应该总是使用 noexcept 作为 setter/getter 吗?

我应该在C++11中始终对getter使用noexcept方法修饰符吗?我的意思是简单的getter,只返回成员。至少在我所有的setter/getter中,我这里不可能有一个异常(exception)被抛出。一个缺点是getter过于冗长:conststd::string&getName()constnoexcept{returnname;}Stroustrup书中指出的好处是编译器可能会在这里和那里做一些优化。 最佳答案 noexcept是一个很难收回的promise。例如,您可以稍后做一些简单的事情,例如将返回类型更改为std

c++ - setter/getter 和二传手。有性能开销吗?

我的C++项目中有一个粒子系统引擎,粒子本身只是没有函数的变量结构。目前,每个粒子(Particle)通过直接访问其变量从其父类(ParticleSystem)更新。例如particle.x+=particle.vx;然而,我正在辩论使用这样的getter和setter:particle.setX(particle.getX()+particle.getVX());我的问题是:与直接访问数据相比,调用getter和setter是否有任何性能开销?毕竟,我确实有很多很多的粒子要更新... 最佳答案 Setter和getter在未优化时

c++ - setter/getter 和二传手。有性能开销吗?

我的C++项目中有一个粒子系统引擎,粒子本身只是没有函数的变量结构。目前,每个粒子(Particle)通过直接访问其变量从其父类(ParticleSystem)更新。例如particle.x+=particle.vx;然而,我正在辩论使用这样的getter和setter:particle.setX(particle.getX()+particle.getVX());我的问题是:与直接访问数据相比,调用getter和setter是否有任何性能开销?毕竟,我确实有很多很多的粒子要更新... 最佳答案 Setter和getter在未优化时

python - 为什么 Python 中的 @foo.setter 对我不起作用?

所以,我在Python2.6中使用装饰器,但在让它们工作时遇到了一些麻烦。这是我的类文件:classtestDec:@propertydefx(self):print'calledgetter'returnself._x@x.setterdefx(self,value):print'calledsetter'self._x=value我认为这意味着将x视为一个属性,但在get和set上调用这些函数。所以,我启动了IDLE并检查了它:>>>fromtestDecimporttestDecfromtestDecimporttestDec>>>t=testDec()t=testDec()>>

python - 为什么 Python 中的 @foo.setter 对我不起作用?

所以,我在Python2.6中使用装饰器,但在让它们工作时遇到了一些麻烦。这是我的类文件:classtestDec:@propertydefx(self):print'calledgetter'returnself._x@x.setterdefx(self,value):print'calledsetter'self._x=value我认为这意味着将x视为一个属性,但在get和set上调用这些函数。所以,我启动了IDLE并检查了它:>>>fromtestDecimporttestDecfromtestDecimporttestDec>>>t=testDec()t=testDec()>>

java - getter 和 setter 的意义何在?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyusegettersandsetters?我读过有关Java的书籍,说为x和y等变量创建setter和getter很好。例如:publicintgetX(){returnx;}publicvoidsetX(intx){this.x=x;}但是和那个有什么区别...(shape.x)...//BasicallygetX()和shape.x=90;//BasicallysetX()如果setter和getter更好,会出现什么实际问题? 最佳答案 多种原