Questions tagged «setter»

Setter是公共增变方法,用于面向对象的编程中,它为类的私有成员赋予新的价值。

30
为什么要使用getter和setter / accessor?
使用仅获取和设置的getter和setter而不是仅对这些变量使用公共字段的优点是什么? 如果getter和setter所做的不只是简单的get / set,我可以很快地弄清楚这一点,但是我不清楚如何做到这一点: public String foo; 比以下任何方面都更糟糕: private String foo; public void setFoo(String foo) { this.foo = foo; } public String getFoo() { return foo; } 而前者需要更少的样板代码。
1540 java  oop  setter  getter  abstraction 


5
在Ruby on Rails中重写setter方法的正确方法是什么?
我正在使用Ruby on Rails 3.2.2,并且我想知道以下内容是否是“正确” /“正确” /“确定”方式来覆盖我的class属性的setter方法。 attr_accessible :attribute_name def attribute_name=(value) ... # Some custom operation. self[:attribute_name] = value end 上面的代码似乎按预期工作。但是,我想知道,通过使用上面的代码,将来我是否会遇到问题,或者至少会遇到Ruby on Rails“我期望” /“可能发生”的问题。如果那不是重写setter方法的正确方法,那么正确的方法是什么? 注意:如果我使用代码 attr_accessible :attribute_name def attribute_name=(value) ... # Some custom operation. self.attribute_name = value end 我收到以下错误: SystemStackError (stack level too deep): actionpack (3.2.2) lib/action_dispatch/middleware/reloader.rb:70

12
傻瓜的吸气器/安装器
我一直在努力使自己了解getter和setter,而不会陷入其中。我已经阅读了JavaScript Getters和Setters和定义Getters和Setters,只是没有得到它。 有人可以明确指出: 吸气器和装夹器的作用是什么,以及 举几个非常简单的例子吗?

14
简单的Getter / Setter注释
您使用什么约定来评论获取方法和设置方法?这是我很长时间以来一直想知道的事情: /** * (1a) what do you put here? * @param salary (1b) what do you put here? */ public void setSalary(float salary); /* * (2a) what do you put here? * @return (2b) */ public float getSalary(); 我总是发现我几乎为1a / b和2a / b写了完全相同的东西,例如1a)设置员工的薪水,1b)员工的薪水。似乎太多余了。现在我可以看到对于更复杂的内容,您可以在(a)部分中编写更多内容,以提供具体背景信息,但是对于大多数使用方法的人来说,措辞几乎完全相同。 我只是好奇,对于简单的获取者/设置者而言,仅填写(a)部分还是(b)部分是否可以。 你怎么看?


4
ECMAScript 6类中的getter和setter是什么?
对于ECMAScript 6类中的getter和setter的意义,我感到困惑。什么目的?以下是我要参考的示例: class Employee { constructor(name) { this._name = name; } doWork() { return `${this._name} is working`; } get name() { return this._name.toUpperCase(); } set name(newName){ if(newName){ this._name = newName; } } }

3
.h和.m文件中@interface定义之间的区别
通常我们使用 @interface interface_name : parent_class <delegates> { ...... } @end .h文件和.m文件中的方法,我们综合了.h文件中声明的变量的属性。 但是在某些代码中,此@interface ..... @ end方法也保留在.m文件中。这是什么意思?它们之间有什么区别? 还提供一些有关.m文件中定义的接口文件的getter和setter方法的信息... 提前致谢

10
C ++中访问器方法(获取器和设置器)的约定
在SO上已经问了几个有关C ++中访问器方法的问题,但没有一个能满足我对此问题的好奇心。 我尝试尽可能避免访问器,因为像Stroustrup和其他著名的程序员一样,我认为带有很多此类的类是OO不好的标志。在C ++中,在大多数情况下,我可以为类增加更多责任,或使用friend关键字避免此类情况。但是在某些情况下,您确实需要访问特定的班级成员。 有几种可能性: 1.完全不使用访问器 我们可以仅公开各个成员变量。在Java中这是不行的,但对于C ++社区似乎可以。但是,我有点担心要返回一个对象的显式副本或只读(const)引用,是否夸大了? 2.使用Java风格的get / set方法 我不确定它是否完全来自Java,但是我的意思是: int getAmount(); // Returns the amount void setAmount(int amount); // Sets the amount 3.使用客观的C风格的获取/设置方法 这有点奇怪,但显然越来越普遍: int amount(); // Returns the amount void amount(int amount); // Sets the amount 为了使它起作用,您将不得不为您的成员变量找到一个不同的名称。有些人在下划线后面加上下划线,其他人则在前面加上“ m_”。我也不喜欢 您使用哪种风格,为什么?
78 c++  accessor  setter  getter 

15
公共数据成员与Getters,Setters
我目前在Qt等C ++中工作。我正在使用具有私有数据成员和公共成员函数的类。我为班级中的数据成员提供了公共获取器和设置器。 现在我的问题是,如果我们在类中具有数据成员的getter和setter方法,那么将那些数据成员设置为私有的意义何在?我同意在基类中拥有私有数据成员听起来很合逻辑。但是除此之外,对我来说,拥有私人成员以及其获取者和设置者也是如此。 或者相反,我们是否可以将所有变量都公开,这样就根本不需要getter和setter?拥有这些是一种好习惯吗?我知道拥有私有成员可以确保数据抽象,但是拥有getter和setter实际上可以非常轻松地访问那些变量。欢迎对此提出任何建议。
77 c++  setter  getter 

2
私人二传手打字稿?
是否可以在TypeScript中为属性设置私有设置器? class Test { private _prop: string; public get prop() : string { return this._prop; } private set prop(val: string) { //can put breakpoints here this._prop = val; } } 编译器抱怨getter和setter的可见性不匹配。我知道我可以设置背景字段,但是设置值时不能设置断点。 我虽然打算使用接口来隐藏设置器,但是接口只能定义属性,而不能定义设置器上是否具有getter。 我在这里想念什么吗?似乎没有任何理由不允许使用私有设置器,因此生成的JS无论如何都不会强制执行可见性,并且与当前的替代方法相比似乎更好。 我想念什么吗?如果没有,那么没有私下的二传手有充分的理由吗?

5
Core-Data中的自定义设置方法
我需要foo在的子类中为字段(我们将其称为)编写自定义的setter方法NSManagedObject。foo是在数据模型中定义的,并且Xcode分别自动生成了.h和.m文件中的@property和@dynamic字段。 如果我这样写我的二传手: - (void)setFoo: (NSObject *)inFoo { [super setFoo: inFoo]; [self updateStuff]; } 然后在调用时收到编译器警告super。 或者,如果我这样做: - (void)setFoo: (NSObject *)inFoo { [super setValue: inFoo forKey: inFoo]; [self updateStuff]; } 然后我陷入无限循环。 那么为NSManagedObject的子类编写自定义设置器的正确方法是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.