我应该如何初始化方法“ 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 :(
}
答案 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作为参数,这就是为什么会出现错误。