首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用Dart编程语言中的嵌套函数

调用Dart编程语言中的嵌套函数
EN

Stack Overflow用户
提问于 2014-06-16 00:05:22
回答 2查看 1.1K关注 0票数 4

我在这里定义了一个内部函数:

代码语言:javascript
复制
person(firstName, lastName){
    fullName(){ //Is it possible to invoke this function outside the 'person' function?
        return firstName + " "  + lastName;
    }
    firstInitial(){
        return firstName[0];
    }
    lastInitial(){
        return lastName[0];
    }
}

接下来,我尝试从"main“函数调用"fullName”函数:

代码语言:javascript
复制
void main() {
  print(person("Rob", "Rock").fullName());
}

但是它产生了这样的错误:

代码语言:javascript
复制
Uncaught TypeError: Cannot read property 'fullName$0' of undefined

是否有可能在定义函数的作用域之外调用内部函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-16 00:29:48

您可以在封闭块之外声明函数:

代码语言:javascript
复制
void main() {
  var fullName;
  person(firstName, lastName){
      fullName = () => "firstName: $firstName lastName: $lastName";
  }
  person("Rob", "Rock");
  print(fullName());
}

或归还:

代码语言:javascript
复制
void main() {
  person(firstName, lastName) => () => "firstName: $firstName"
                                       "lastName: $lastName";
  print(person("Rob", "Rock")());
}

如果您想要这个语法person("Rob", "Rock").fullName(),可以返回类实例:

代码语言:javascript
复制
class Res{
  var _firstName, _lastName;
  Res(this._firstName, this._lastName);
  fullName() => "firstName: $_firstName lastName: $_lastName";
}
void main() {
  person(firstName, lastName) => new  Res(firstName,lastName);
  print(person("Rob", "Rock").fullName());
}
票数 5
EN

Stack Overflow用户

发布于 2014-06-17 00:26:33

这些函数可以从外部调用,问题是您的程序无法看到它们。您的函数返回void,因此内部函数是不可见的。

但是看起来你想要做的是定义一个类。所以一个更简单的方法就是

代码语言:javascript
复制
  class Person {
    var firstName, lastName;
    Person(this.firstName, this.lastName);
    get fullName => "$firstName $lastName";
    firstInitial() => firstName[0];
    lastInitial() { return lastName[0]; }
  }

  main() {
    print(new Person("Rob", "Rock).fullName);
    print(new Person("Robert", "Stone").lastInitial());
  }

为了举例说明,我为这三个不同的函数使用了三个不同的语法,一个getter,一个lambda和一个完整的函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24235190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档