草庐IT

Getters-Setter

全部标签

android - kotlin setter 无限递归

我正在Android上测试kotlin,遇到了一个问题,即两个变量的setter在无限递归中被调用,因为它们在最初设置时试图相互更改。这是一个示例代码classExample{vara:Int=0set(value){b=a+10}varb:Int=0set(value){a=b-10}}然后说我使用以下代码:valexample=Example()example.a=10它最终导致无限递归并最终导致堆栈溢出。b的二传手调用a的setter进而调用b的setter再次。它会永远持续下去。我希望能够更新b的值每当a已设置,但也会更新a的值每当b已设置。Kotlin专家有什么想法吗?在这种

c++ - unique_ptr 对象的 getter 和 setter(依赖注入(inject))

我有一个MyClass类,它拥有某个DataProvider类的一个实例,并为此提供了一个getter。为了依赖注入(inject),我更愿意有一个getter和一个setter。此外,DataProvider应包含在std::unique_pointer中:#include#includeclassDataProvider{public:DataProvider(){}virtual~DataProvider(){}/*stuff*/private:/*morestuff*/};classMyClass{public:MyClass(){}virtualinlineconstData

kotlin - Kotlin 中的 Setter 重载

当试图定义一个接受可用于构造属性的参数类型的setter时,因此:classBuffer(buf:String){}classFoo{varbuffer:Buffer?=nullset(value:String){field=Buffer(value)}}我收到错误消息:Setterparametertypemustbeequaltothetypeoftheproperty那么Kotlin的这种做法是什么意思? 最佳答案 从Kotlin1.1开始,无法重载属性setter。此处跟踪功能请求:https://youtrack.jetb

kotlin - Kotlin 中的 Setter 重载

当试图定义一个接受可用于构造属性的参数类型的setter时,因此:classBuffer(buf:String){}classFoo{varbuffer:Buffer?=nullset(value:String){field=Buffer(value)}}我收到错误消息:Setterparametertypemustbeequaltothetypeoftheproperty那么Kotlin的这种做法是什么意思? 最佳答案 从Kotlin1.1开始,无法重载属性setter。此处跟踪功能请求:https://youtrack.jetb

c++ - 通过引用返回或创建一个典型的 setter/getter?

这个问题在这里已经有了答案:Getterandsetter,pointersorreferences,andgoodsyntaxtouseinc++?(8个答案)关闭9年前。我想知道C++中的良好实践,我正面临为类成员制作getter/setter的问题。那么,为什么不简单地通过引用返回成员,这样我就可以修改或访问它的值来读取它?具体来说,这是我的代码:classChest:publicGameObject{public:Chest();~Chest();staticint&num_chests();private:staticintnum_chests_;};这是一种不好的做法吗?我

c++ - 什么是更好的做法? protected / setter/getter ?

如果我有一个继承自另一个的类,并且只有这个类必须使用某个变量,哪种做法更好?要在基类中说变量是“protected”,还是让它私有(private)并给它一个protectedgetter?我听说过相互矛盾的事情。我的老师告诉我要始终使用getter,而其他人告诉我,在任何级别使用getter都会暴露糟糕的程序设计。真正的答案是什么?我觉得两者都是不合逻辑的极端。此外,如果getter和setter是糟糕的程序设计,这是为什么呢?是否有任何资源可以教我更多有关如何构建代码的信息? 最佳答案 除了读取值之外,您是否需要(或预计您将来需

c++ - `noexcept` getters 和 setters 说明符

假设我有以下代码:classA{public:voidSetInteger(constintval)noexcept{integerMember=val;}voidSetString(conststd::string&val){stringMember=val;}intGetInteger()constnoexcept{returnintegerMember;}std::stringGetString()const{returnstringMember;}private:intintegerMember;std::stringstringMember;}对我来说,对整数类型和指针使用n

c++ - 这是否在 C++ setter 中使用有关系吗?

假设我有一个带有私有(private)变量x的C++类。对于它的setter,使用this有什么区别吗?如果我不使用this,是否有可能出现不需要的/意外的行为?二传手:voidsetX(doubleinput){x=input;}使用this的Setter:voidsetX(doublex){this->x=x;} 最佳答案 这两个代码片段(假设它们是内联成员函数,因为没有ClassName::位)完全等价。使用您喜欢的任何一个。不过,我倾向于建议不要将参数命名为与成员变量相同的名称;很容易将它们混淆。

c++ - 在头文件中实现 getter 和 setter

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我有一个简单的问题,像这样在头文件中实现getter和setter是一种好习惯吗?classWebsocketSession:publicboost::enable_shared_from_this{public:WebsocketSession(boost::asio::io_service&io_service,WebsocketServer&server);tcp::socket&g

Java 互操作 : Apply @JvmName to getters of properties in interface or abstract class

通常我们可以在kotlin中编写如下代码:valhasValue:Boolean@JvmName("hasValue")get()=true这将为Javainterop生成方法hasValue()而不是getHasValue()。但是,在界面中,这给了我一个编译错误:valhasValue:Boolean@JvmName("hasValue")get抽象类中的以下声明也是如此:abstractvalhasValue:Boolean@JvmName("hasValue")get所以这是我的问题:如何告诉kotlin编译器使用hasValue()而不是getHasValue()来获取a中属