在AS3中有一种合成获取器/设置器的方法吗?你有很多变量的类是很常见的,尤其是在数学计算(MVC模式中的模型)中,你想要揭示的东西。在Objective-C中是否有类似合成属性的东西,允许生成getters/setters?在AS3中合成获取器/设置器
感谢,
纳瓦
在AS3中有一种合成获取器/设置器的方法吗?你有很多变量的类是很常见的,尤其是在数学计算(MVC模式中的模型)中,你想要揭示的东西。在Objective-C中是否有类似合成属性的东西,允许生成getters/setters?在AS3中合成获取器/设置器
感谢,
纳瓦
编辑:如果你想使用IDE(日食)。您可以右键点击课程 - >来源 - >生成吸气器和安装人员
它与合成的用法不同,但如果您只想暴露他们并且不必使用getMethod()表示法,它可以帮助你像这样使用关键字get/set来声明方法。
public function get example() : int
{
return example;
}
public function set example(value : String) : void
{
example = value;
}
当你使用它,你访问你可以使用变量,好像他们是公众和方法将被调用,而不是直接访问
如果你只是使它成为公共财产,你不必担心getter和setter方法:
public var str:String;
但是,如果你需要沿着什么为了通知你自己的财产变化,你需要自己编写代码。希望你使用的任何IDE都可以通过为你生成这种代码来帮助你,或者你可能需要设置一些DIE可以为你注入的代码片段。
避免复制和粘贴,如果可以的话,你一定会错过改变名称的东西,会导致你的问题在路上。
我正在使用eclipse。我希望这些属性是私人的: private var _str:String; 并生成一个公共str的getter和setter。你知道我如何在日食中做到这一点? 谢谢,Nava – 2009-11-16 14:35:15
您可以尝试正则表达式的时间。 在尝试此操作前进行备份。
例如,如果你的private
变量命名为_str
,你希望它是public
的getter/setter被命名为str
,您可以使用下面的模式。在flex builder(或eclipse)中按Ctrl-F,勾选正则表达式复选框,并将以下模式添加到搜索并分别替换输入字段。现在点击'Find'查找属性声明并点击'Replace'来生成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;
}
upvoted你的答案,因为它真的很有用和整洁。 – 2009-11-16 18:23:34
对于那些正在使用的Flex Builder 3 IDE,有插件,用于创建和放置代码片段,例如这里:http://www.insideria.com/2008/04/flex-builder-enhancements-snippets-and-todo.html(在该网站上还有其他一些小而有用的工具)
这些可以用于一个或多或少舒适的吸气/二手设备的一代。
但是我只创建显式的getter和setter,如果我需要在那里放置一些额外的代码。有些人说如果你不使用getter和setter,它会打破封装。然而,用一种语言,你可以在不改变接口的情况下添加getter和setter,我不认为这是真的了。对于用户来说,如果他使用简单变量赋值或函数set varName(arg:object):void,则它是完全透明的。
还要记住,如果你创建一个变量[Bindable](即没有显式事件名称),编译器会为你的变量创建getter和setter,即使你没有注意到它(除了已经有getter和setters当然)。这是顺便说一句&肮脏的方式来实现声明getter和setter函数的接口
很好。太可惜了,选择几个答案作为答案是不可能的,但我总是可以upvote :) – 2009-11-16 17:39:39
这总是赞赏:) – 2009-11-16 17:51:11
我同意这一点 - 如果你正在做的是创建一个没有任何特殊行为的getter/setter包装那么直接拥有公共属性就没有区别。 – 2009-11-17 00:08:58
谢谢,我知道如何与getter/setters一起工作,我的问题是是否存在一些属性,就是说:为我生成它们。 这是很多肮脏的工作和代码重载手写getters/setter为大约20个变量。您可以使用40种功能复制/粘贴错误的可能性非常高。我认为有一个更优雅的方式来做到这一点 – 2009-11-16 14:43:21
如果你想使用IDE(日食)。你可以去右键点击课程 - >来源 - >生成吸气剂和固化剂 – 2009-11-16 14:45:34
伟大的,谢谢,这就是我一直在寻找! – 2009-11-16 15:02:05