import 'package:flutter/foundation.dart';
class DartMethodBasic {
//调用内置方法 void 表示无返回值
static void test() {
print(arrowMethod);
}
//有返回值的方法,返回类型不能设置成var,不知道返回值类型可以不写 比如去掉String 依然能够return
String haveR() {
int i = 0;
return i.toString();
}
//有返回值 有参数
int haveReAndP(int value) {
return value++;
}
//箭头方法 将返回hello字符串 方法里只有一行代码 可以用箭头方法
static String arrowMethod() => 'hello';
//方法里面可以嵌套方法
void innerMethod() {
//这是一个方法的内部方法
String helloText() {
haveReAndP(1); //内部发发可以调用外部的方法
return 'hello····';
}
helloText(); //外部的方法无法调用该方法
}
//调用可选参数的方法
void methodTwo () {
String address = getLocName('浙江', '杭州');
print(address);
String address2 = getLocName('浙江', '杭州','火炬大道','86');
debugPrint(address2);
// String address3 = getLocNameUseParamName('浙江', '杭州','火炬大道','86');//报错,用下面的方式
String address3 = getLocNameUseParamName('浙江', '杭州',street:'火炬大道',citycode:'86');
//命名参数为选填参数,方法里面的命名参数最好给默认值
String address4 = getLocNameUseParamName('浙江', '杭州');
String address5 = getLocNameAllUseParamName(privance: '浙江',city: '杭州',street:'火炬大道',citycode:'86');
}
//可选参数方法,后面的street citycode为可选参数,使用见methodtwo,可选参数用[]包裹
String getLocName (String privance,String city,[String street,String citycode]){
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.write(privance);
stringBuffer.write(city);
if(street!=null) {
stringBuffer.write(street);
}
if(citycode!=null) {
stringBuffer.write(citycode);
}
return stringBuffer.toString();
}
//默认参数 street上有一个默认的参数 内容是‘江南大道’
String getLocNameWithDefalut (String privance,String city,[String street='江南大道',String citycode]){
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.write(privance);
stringBuffer.write(city);
if(street!=null) {
stringBuffer.write(street);
}
if(citycode!=null) {
stringBuffer.write(citycode);
}
return stringBuffer.toString();
}
//命名参数 命名参数用{}包裹,调用此类方法见methodTwo
//默认参数 street上有一个默认的参数
String getLocNameUseParamName (String privance,String city,{String street='江南大道',String citycode}){
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.write(privance);
stringBuffer.write(city);
if(street!=null) {
stringBuffer.write(street);
}
if(citycode!=null) {
stringBuffer.write(citycode);
}
return stringBuffer.toString();
}
//全部都是命名参数的方法
String getLocNameAllUseParamName ({String privance='江苏',String city='南京',String street='玄武湖街道',String citycode}){
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.write(privance);
stringBuffer.write(city);
if(street!=null) {
stringBuffer.write(street);
}
if(citycode!=null) {
stringBuffer.write(citycode);
}
return stringBuffer.toString();
}
/*把方法当做参数,调用的方法*/
void fnOne() {
print('我是fnone方法');
}
void fnTwo (fn) {
fn();
}
//当调用fnThree的时候,fnthree回调用fntwo,并把fnone穿过去,最终输入结果为‘我是fnone方法’
void fnThree () {
fnTwo(fnOne);
}
//匿名方法 匿名方法就是等号后面的部分,它是没有名字的,并且最后的大括号后面要加分号,必须用var和final修饰
var person = () {
print('我是好人');
};
/** 方法递归 求6的阶乘*/
var sum = 1;
void countSum (value) {
sum*=value;
if(value == 1) {
print('6的阶乘的值'+sum.toString());
}
countSum(value-1);
}
void computeSix() {
//求6的阶乘
countSum(6);
}
}
网友评论