英文:
What is the difference between a function and getter in Dart?
问题
从函数中获取值,我可以这样做:
bool goOutside() {
if (今天是个好天气) {
return true;
} else {
return false;
}
}
但我也可以这样做:
bool get goOutside {
if (今天是个好天气) {
return true;
} else {
return false;
}
}
有人能告诉我它们之间的区别吗?哪一个是*‘正确’*的,或者它们分别适用于哪些用例?
英文:
To get a value from a function I can to this:
bool goOutside() {
if(today is a good day){
return true;
}else{
return false;
}
}
But I can also do this:
bool get goOutside {
if(today is a good day){
return true;
}else{
return false;
}
}
Can someone tell me the difference between those? Which one is the 'right' one or for what use cases are they are good?
答案1
得分: 2
代码调用的语法不同。对于get
,你只需使用print(goOutside);
,但对于函数,你需要使用()
运算符,如print(goOutside());
。这也意味着函数可以在参数列表中接受参数,而getter则不行。
我会选择使用getter而不是不接受参数的函数,因为这样可以得到更清晰、易维护的代码。然而,如果代码涉及IO操作或可见于程序的副作用,我会选择函数,以便明确表达这一点,避免难以找到的错误。
**免责声明:我不是Dart专家。这个答案是推测性的。
英文:
The syntax for invoking the code is different. In the case of the get
you would just use print(goOutside);
but in the case of the function you would call with the ()
operator as in print(goOutside());
. This also means the function can accept parameters in the arguments list but the getter cannot.
I would go for a getter instead of a function that accepts no parameters as this could result in cleaner and more maintainable code. However if the code has any funny business such as IO or program-visible side-effects I would go for the function to make this clear and avoid hard to find bugs.
Disclaimer: I am not a Dart expert. This answer is speculative.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论