我是一个Java开发人员,我总是使用getter-setter方法。
如何在Delphi中使用这个概念?
- 我定义了一个局部变量
//1
- 我创建了一个属性
//2
- 我按下CTRL + SHIFT + C,编辑器将创建getter和setter方法
//3
对于这个例子:
unit Unit1;
type
ClassePippo=class
private
colorText:string; //1
function getColorText: String; //3
procedure setColorText(const Value: String); //3
public
property colore: String read getColorText write setColorText; //2
end;
implementation
{ ClassePippo }
function ClassePippo.getColorText: String; //3
begin
Result:=colorText;
end;
procedure ClassePippo.setColorText(const Value: String); //3
begin
colorText:=Value;
end;
end.
是否有自动创建getter和setter方法的特性?
我只想编写colorText: string; //1
并调用一个快捷方式,并且希望IDE自动创建//2
和//3
。
(When我使用Eclipse在Java中进行开发,我可以使用Source--〉Generate getter and setter ...自动生成getter和setter方法。)
3条答案
按热度按时间qzwqbdag1#
首先输入你想要的属性而不是内部变量。在你的类中创建如下类型So
Property Colore : String Read GetColorText Write SetColorText;
然后按CtrlShift键C
IDE随后将创建getter、setter和私有内部变量。
注意属性setter和getter在Object Pascal中是可选的。
Property Colore : String Read FColorText Write FColorText;
或者只有一个setter或getter
Property Colore : String Read FColorText Write SetColorText;
在这种情况下,IDE将生成专用变量
FColorText
和setter方法SetColorText
jq6vz3qz2#
IDE中没有可以满足您需要的功能。
可以使用Ctrl + Shift + C从
property
声明生成getter和setter,但这些getter和setter是空的存根。坦率地说,在我看来,这是相当合理的行为。如何期望IDE知道您希望如何实现getter和setter?不能期望IDE知道您打算使用哪个字段。您的代码很好地演示了为什么会这样。属性名和字段名之间没有明显的算法关系。
要说明的另一点是,如果您希望IDE自动生成问题中getter和setter的代码,为什么还要为getter和setter费心呢?您完全可以这样编写:
如果你希望能够使用你所描述的特性,你需要找到一个 Delphi 的扩展来实现这个特性。显而易见的候选者是CnPack和GEperts。或者如果你找不到这样的扩展,自己写一个。
ajsxfq5m3#
您可以通过三个步骤完成此操作。
使用getter和保存值的变量定义属性:
按Ctrl + Shift + C生成变量和getter sub:
...
还有
现在更改属性以读取变量并使用setter进行写入:
再次按Ctrl + Shift + C生成setter子对象:
现在更改属性以使用getter和setter:
是的,这有点复杂,但是如果你有很多属性需要一次定义的话,这会很有帮助。