有没有办法在 AS3 中合成 getter/setter?您有一个包含很多变量的类,特别是在数学计算(MVC 模式中的模型)中,您想公开这些变量是很常见的。在 Objective-C 中是否有类似综合属性的东西,它允许生成 getter/setter?
谢谢,
纳瓦
有没有办法在 AS3 中合成 getter/setter?您有一个包含很多变量的类,特别是在数学计算(MVC 模式中的模型)中,您想公开这些变量是很常见的。在 Objective-C 中是否有类似综合属性的东西,它允许生成 getter/setter?
谢谢,
纳瓦
对于使用 Flex Builder 3 IDE 的用户,可以使用插件来创建和放置代码片段,例如:http: //www.insideria.com/2008/04/flex-builder-enhancements-snippets-and- todo.html(该站点上还编译了一些其他小但有用的工具)
这些可以用于或多或少舒适的 getter/setter 生成。
但是,如果我需要在那里放置一些额外的代码,我只会创建显式的 getter 和 setter。有些人说如果你不使用 getter 和 setter 会破坏封装。但是,使用一种可以在不更改界面的情况下稍后添加 getter 和 setter 的语言,我认为这不再是真的了。对于用户来说,如果他使用普通变量 assign 或函数集 varName(arg:object):void,则完全透明。
还要记住,如果您创建一个变量 [Bindable](即没有明确的事件名称),编译器会为您的变量创建 getter 和 setter,而您甚至不会注意到它(当然已经有 getter 和 setter 除外)。这是BTW一种快速而肮脏的方式来实现声明getter和setter函数的接口
你可以试试正则表达式。在尝试此操作之前进行备份。
例如,如果您的private
变量被命名_str
并且您希望它的public
getter/setter 被命名str
,您可以使用以下模式。在 flex builder(或 eclipse)中按 Ctrl-F,勾选 regex 复选框,并将以下模式分别添加到搜索和替换输入字段中。现在点击“查找”以查找属性声明并点击“替换”以生成 setter 和 getter。
^((\t)+)private\s+var\s+_(\w+):(\w+)\s*;\s*(\n)
$0$5$1public function set $3(value:$4):void$5$1{$5$1$2_$3 = value;$5$1}$5$5$1public function get $3():$4$5$1{$5$1$2return _$3;$5$1}$5$5
此模式已在
private var _str:String;//indented by two tabs
它成功生成:
private var _str:String;
public function set str(value:String):void
{
_str = value;
}
public function get str():String
{
return _str;
}
如果您只是将其设为公共属性,则不必担心 getter 和 setter:
public var str:String;
但是,如果您需要与事件分派类似的任何东西来通知自己属性更改,则需要自己编写代码。希望您使用的任何 IDE 都可以为您生成此类代码,或者您可能需要设置 DIE 可以为您注入的某种代码片段。
如果可以,请避免复制和粘贴,您一定会错过更改某些会导致您在路上出现问题的名称。
编辑:如果你想使用 IDE (eclipse) 。你可以右击class->Source->Generate Getters and Setters
它与合成的用途不同,但如果您只想公开它们而不必使用 getMethod() 表示法,它可以帮助您像这样使用关键字 get/set 声明方法。
public function get example() : int
{
return example;
}
public function set example( value : String ) : void
{
example = value;
}
当您在访问时使用它时,您可以像使用公共变量一样使用变量,并且将调用方法而不是直接访问