函數
可選參數
Dart是一個面向對象的語言,即使是函數也是對象,所以函數也可以被聲明成變量,或者作爲另一個函數的參數。也可以像調用函數一樣調用類的實例變量,這一點和Java類似(由於本人原先是做Java的,所以看語言的特性經常會以Java來類比)。
同樣,跟Java一樣,函數的參數可分爲有參和無參兩種類型。
以下以兩種不同的代碼段帶大家認識以下Dart的函數。
/*判斷*/
getNumStatus(num a) {
if(a > 0) {
return "數字大於零";
}else if(a==0){
return "數字等於零";
}else{
return "數字小於零";
}
}
這種和Java 的寫法沒有太大的區別,與Java不同的是Dart可以將參數用中括號[]括起來,用來表明是可選位置的參數,例如在一個學生信息表中,其中Name和Sex,是必傳的,From和Phone是可以選擇性的傳遞(傳或不傳均可),代碼如下:
//獲取用戶信息
String getUserInfo(String name, String sex, [String phone,String from]) {
var info = '$name的性別是$sex';
if (from != null) {
info = '$info來自$from';
}
if(phone !=null){
info = '$info手機號是:$phone';
}
return info;
}
void test() {
print(getUserInfo('小帥', '男'));
}
這種就是Dart的可選參數,調用上面的方法的輸出是“小帥的性別是男”,但是不會打印出手機號和性別,這點是和Java不一樣的(在我印象中Java是不可以這麼寫的,如有錯誤,還請指教。)
參數默認值
在Java中方法是分爲有返回值的方法和無返回值的方法,但是在Dart中如果參數指定了默認值,當不傳值是,函數裏會使用這個值的默認值(正常情況下這個默認值都會爲null),如果傳入了指定的值,則會返回指定的返回值,修改上述代碼如下:
//獲取用戶信息
String getUserInfo(String name, String sex, [String phone = "110",String from = "中國"]) {
var info = '$name的性別是$sex';
if (from != null) {
info = '$info來自$from';
}
if(phone !=null){
info = '$info手機號是:$phone';
}
return info;
}
void test() {
print(getUserInfo('小帥', '男'));
}
上述代碼輸出“小帥的性別是男來自中國手機號是:110”,這點也和Java不太一樣。
main函數
這裏和Java區別不大,程序必須擁有main函數,並且main函數也是程序的入口,Dart實例代碼如下:
void main() => runApp(MyApp());
函數返回值
在Dart語言中,函數的返回值有以下需要注意的幾點
- 所有的函數都會有返回值。
- 如果沒有指定函數返回值,則默認的返回值是null。
- 沒有返回值的函數,系統會在最後添加隱式的return語句。