如何初始化一个方法,以便可以在另一个方法中将其用作参数?

时间:2019-10-22 22:05:40

标签: flutter dart

我应该如何初始化方法“ greet()”,以便可以将其用作“ print()”中的参数?

我的代码如下:

 class Person {
            var myName = 'Mehedi';
            var myAge  =   26;

            void greet() {
                print('Hi, I am ' + myName + ' and I am ' + myAge.toString() + ' years old!');
               //How do I see the above line as an Output?
            }
        }

        void main() {
            var myself = Person();
            print(myself.myName);
            print(greet()); //this is showing as an error :(
        }

1 个答案:

答案 0 :(得分:1)

我认为最简单的方法就是直接调用greet,因为它已经包含了print()方法。因此,当您调用greet()时,内部的print()方法将运行。

void main() {
        var myself = Person();
        print(myself.myName);
        greet();
    }

或者,您可以定义greet,以便它返回字符串而不是调用print本身:

        String greet() {
            return 'Hi, I am $myName and I am ${myAge.toString()} years old!';
        }

这样,当您在main的print方法内调用它时,它将返回一个可以打印到控制台的字符串,而不是返回“ void”。

定义greet(){...}时,实际上是将greet定义为对象,因为dart中的所有对象都是对象。该对象恰好是一个函数。因此,您可以说不带括号的print(greet),它会告诉您它是一个函数实例或一个闭包(函数类型)。但是,一旦您在问候语后面加上括号,便告诉Dart执行该功能。执行该函数时,它将返回将被print使用的参数。编译器知道greet()返回void,并且知道print不能将void作为参数,这就是为什么会出现错误。