2014-02-12 10 views
6

:명명 된 매개 변수를 짧은 생성자 매개 변수와 결합 할 수 있습니까? 다트에서

명명 된 매개 변수가 소위

String send(msg, {rate: 'First Class'}) { 
    return '${msg} was sent via ${rate}'; 
} 

// you can use named parameters if the argument is optional 
send("I'm poor", rate:'4th class'); // == "I'm poor was sent via 4th class" 

짧은 손 생성자 매개 변수와 같은 기능을 어떤 식 으로든가 거기에 소위

class Person { 
    String name; 

    // parameters prefixed by 'this.' will assign to 
    // instance variables automatically 
    Person(this.name); 
} 



같은 기능을 아래처럼 뭔가요? -

class Person{ 
    String name; 
    String age; 

    Person({this.name = "defaultName", this.age = "defaultAge"}); 
} 

//So that I could do something like: 
var personAlpha = new Person(name: "Jordan"); 

감사가,

코드 샘플 dartlang synonyms

답변

3

에서 차용 당신은 여전히 ​​선택적 매개 변수가 =에 사용하는 것이 혼동

class Person { 
    String name; 
    String age; 

    Person({this.name: "defaultName", this.age: "defaultAge"}); 
} 

나는이 찾을 단지 콜론을 사용할 필요가 대신 동일 기본값을 지정하지만 이름은 :입니다. 자신에게 질문해야합니다.

+1

이 구문의 인수는 "리터럴 맵"모양입니다. – lrn

+0

정보를 제공해 주셔서 감사합니다. –

+2

또한보십시오 http://dartbug.com/7979 – lrn

2

"this"를 사용할 수 있습니다. 모든 인수 유형이있는 구문. 위에서 언급 한 것처럼 명명 된 매개 변수의 기본값은 ':'가 필요합니다.

"this"를 사용할 수도 있습니다. 함수 유형 지정 매개 변수의 경우 :

class C { 
    Function bar; 
    C({int this.bar(int x) : foo}); 

    static foo(int x) => x + 1; 
} 
+0

이것은 너무 굉장합니다. 감사합니다 Irn! 어떻게 술집은 선택 사항이 될 수 있습니까? bar와 foo는 둘 다 필수 매개 변수 x를가집니다. 그래서 bar를 매개 변수로 포함하지 않았다면, foo는 x가 무엇인지 어떻게 알 수 있습니까? – Jordan

+0

이 경우 "bar"는 값을 예상하는 표준 선택적 매개 변수 일뿐입니다. 이 값은 함수 타입 (int-> int)을 가져야하지만,'C ({String this.bar : 'bif'})'와는 다르지 않다. 인수가 생략되면 기본값을 사용하고 그렇지 않으면 전달 된 인수를 사용합니다. 'new C (bar : null)'또는'new C (bar : (z) => -z)'라고 부를 수 있습니다. – lrn