2014-10-16 4 views
2

다트 편집기는을 인식하지 못합니다. 여기서 keyword은 클래스 필드입니다. 표현식은 메소드 컨텍스트의 함수에 위치합니다. 그러나 그것은 $keyword을 인식합니다. 혼란은 $this.keyword을 인식하지 못하는 이유는 this 키워드가 C# 또는 Java처럼 고정적이어야한다는 것입니다.다트의이 키워드, 문자열 보간

class TryMe { 
String keyword; 

void hi(Function callback) { 
    callback(() => return '$this.keyword'); 
} 
} 

답변

5

보간 부분이 당신은 내가 당신의 코드가 무엇을하고 있는지 확실하지 않다 {}

callback(() => return '${this.keyword}'); 
1

를 추가 할 필요가 식별자하지만 표현하지 않으면,하지만 당신은하지 보통 this을 사용하여 클래스 필드를 참조하십시오.

class TryMe { 
    String keyword; 

    void hi(Function callback) { 
    callback(() => keyword); 
    } 
} 

는 또한 => 구문을 사용할 때이 return을 필요로하지 않음을 노트로 : 당신은 당신의 코드를 다시 작성할 수 있습니다.

+0

맞아. 'this' 키워드를 생략 할 수 있는지 여부에 대한 기사가 있습니까? 어떤 메커니즘이이 메커니즘을 사용합니까? – sudo

+1

'x'와 같은 변수 이름을 쓰고 텍스트 범위에'x' 선언이 없다면, 항상'this.x'를 의미합니다. scope에 선언이 있고 그것이 인스턴스 멤버라면, 그것은 또한'this.x'를 의미합니다. 그렇지 않으면 정적/최상위/로컬 변수 선언을 대신 참조합니다. – lrn