/**
* 內(nèi)置方法/ 函數(shù):
*? ? print()
*
* 自定義方法:
*? ? 自定義方法的基本格式
*? ? 返回類型? 方法名稱? (參數(shù)1, 參數(shù)2, ...){
*? ? ? ? 方法體;
*? ? ? ? return 返回值;
*? ? }
*/
var num = 100;
main(List<String> args) {
? print("num是全局作用域的 = $num");
? say();
? var a = add(3, 4);
? print(a);
? var des = func1("張三", 20, 100);
? print(des);
? var des1 = func2("李四", 19, 99);
? print(des1);
? var des2 = func3(name: "王五", age: 21, score: 80);
? print(des2);
? fn2(fn1);
? // 匿名函數(shù)
? var fn = () {
? ? print("匿名函數(shù)!");
? };
? fn();
}
void say() {
? print("這是自定義沒有返回值的函數(shù)");
}
int add(a, b) {
? print("這是自定義有返回值的函數(shù)");
? return a + b;
}
// 可選參數(shù)
// 定義一個可選參數(shù)的方法, 可以選參數(shù)要放在最后一個參數(shù)上,用中括號括起來, 中括號里面的參數(shù)可以有多個
String func1(String name, [int age, double score]) {
? if (age != null && score != null) {
? ? return "$name, $age, $score";
? } else {
? ? return "$name";
? }
}
// 默認參數(shù)
// 定義一個默認參數(shù), 默認參數(shù)是要定一個可選參數(shù)的中括號[]里面的
String func2(String name, [double score = 100, int age]) {
? if (age != null && score != null) {
? ? return "$name, $age, $score";
? } else {
? ? return "$name, $score";
? }
}
// 命名參數(shù)
// 就是用大括號括起來的一個參數(shù), 類似一個字典傳過去, 里面也可以默認參數(shù)值
String func3({String name, double score = 100, int age}) {
? if (age != null && score != null) {
? ? return "$name, $age, $score";
? } else {
? ? return "$name, $score";
? }
}
// 函數(shù)作為參數(shù)
fn1() {
? print("fn1");
}
fn2(fnName) {
? fnName();
}