문제

AS3에서 게터/세터를 합성하는 방법이 있습니까? 노출하려는 많은 변수, 특히 수학 계산 (MVC 패턴의 모델)에서 많은 변수가있는 클래스가있는 것이 매우 일반적입니다. Objective-C에 합성 속성과 같은 것이 있습니까?

감사,

해군

도움이 되었습니까?

해결책

편집 : IDE (Eclipse)를 사용하려는 경우. 클래스-> 소스-> getters and setter를 생성하여 오른쪽 클릭 할 수 있습니다.

합성과 동일하게 사용하지는 않지만 노출을 노출 시키려고하고 getMethod () 표기법을 사용할 필요가 없다면 키워드가 이와 같이 get/set로 메소드를 선언하는 데 도움이 될 수 있습니다.

public function get example() : int
{
             return example;
}
public function set example( value : String ) : void
{
             example = value;
}

액세스 시간을 사용하면 변수가 공개되는 것처럼 변수를 사용할 수 있으며 직접 액세스 대신 메소드가 호출됩니다.

다른 팁

당신은 Regex를 시도 할 수 있습니다. 이것을 시도하기 전에 백업을하십시오.

예를 들어, 당신의 경우 private 변수의 이름이 지정되었습니다 _str 그리고 당신은 그것을 원합니다 public Getter/Setter가 지명 될 예정입니다 str, 다음 패턴을 사용할 수 있습니다. Flex Builder (또는 Eclipse)에서 Ctrl-F를 누르고 Regex Check Box를 체크하고 다음 패턴을 검색 및 입력 필드에 각각 추가하십시오. 이제 'Find'를 누르면 속성 선언을 찾아 '교체'를 치고 세터와 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;
    }

Flex Builder 3 IDE를 사용하는 사람들의 경우 코드 스 니펫을 작성하고 배치하기위한 플러그인이 있습니다. http://www.insideria.com/2008/04/flex-builder-enhancements-snippets-and-todo.html (해당 사이트에 편집 된 다른 작지만 유용한 도구가 있습니다)

이것들은 다소 편안한 getter/setter 생성에 사용할 수 있습니다.

그러나 추가 코드를 배치 해야하는 경우에만 명시적인 getters and setter를 만듭니다. 게터와 세터를 사용하지 않으면 캡슐화를 깨뜨린다 고 말하는 사람들이 있습니다. 그러나 인터페이스를 변경하지 않고 나중에 게터와 세터를 추가 할 수있는 언어를 사용하면 이것이 더 이상 사실이라고 생각하지 않습니다. 사용자에게 일반 변수 할당 또는 함수 세트 varname (arg : object) : void를 사용하는 경우 완전히 투명합니다.

또한 변수 [바인딩 가능] (즉 명시 적 이벤트 이름이없는)을 만드는 경우, 컴파일러는 당신이 그것을 알아 차리는 변수의 getters and setter를 생성합니다 (이미 getters and setters가있는 것을 제외하고). 이것은 btw getter 및 setter 기능을 선언하는 인터페이스를 구현하는 빠르고 더러운 방법입니다.

당신이 그것을 공공 재산으로 만들면 getters와 setter에 대해 걱정할 필요가 없습니다.

public var str:String;

그러나 재산 변경을 직접 알리기 위해 이벤트 파견 라인을 따라 무엇이든 필요한 경우 직접 코딩해야합니다. 당신이 사용하는 IDE가 당신을 위해 이런 종류의 코드를 생성함으로써 도움이 될 수 있기를 바랍니다. 그렇지 않으면 다이가 당신을 위해 주입 할 수있는 일종의 코드 스 니펫을 설정해야 할 수도 있습니다.

가능한 경우 복사 및 붙여 넣기를 피하십시오. 도로에서 문제를 일으킬 수있는 무언가의 이름을 바꾸는 것이 그리워요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top