dart参数传方法_Dart语法
1.Dart程序运行的入口是main函数,所以写一段Dart程序时,必须要有main函数
void main(List args){
print("Hello Dart");
}
2.Dart定义变量
Dart为强类型语言
第一种定义变量方式,明确类型声明,如
String name = "xiaoming";
int age = 1;
double height = 12.1;
int a = "xiaoming"; //错误的定义方式
print("${name} ${age} ${height}");
//如果是变量的话{}可以省略,有的时候不能省略
print("$name $age $height");
//打印类型
print(name.runtimeType);
print(age.runtimeType);
print(height.runtimeType);
第二种定义变量方式,类型推导方式,如
var hint = "hello";
//hint = 100; //错误的赋值,hint为String类型
print("$hint");
const name1="你好"; //常量,不可再赋值
final name2="你好"; //常量,不可再赋值
//区别
// const 声明时必须直接赋值
// final 可以运行时赋值,如接收一个函数的返回值
dynamic cc = "a";
cc = 10; //可以
print(cc.runtimeType);
3.Dart支持10进制和16进制,其他不支持
4.Dart中不通过非空值作为Boolean 类型来判断
String s = "123";
if(s){ //行不通
//
}
5.定义字符串的三种方式,三种方式都可以
String s1 = "123456";
String s2 = '123456';
String s3 = '''
abc
def
''';
//当$后面是表达式时,则必须放在{}中
print("name:${name.runtimeType} age:${age.runtimeType} height:${height.runtimeType}");
6.集合
List Set Map
void main(List args){
List nameList = ['xiaoming','xiaohong','xiaogang','xiaoming','xiaohong'];
Set numberList = {1,2,3,4,5,6};
// print(nameList);
// print(numberList);
// Set集合不能有重复元素,可以使用Set来去重
List newNameList = List.from(Set.from(nameList));
print(newNameList);
Map info = {
"name":"yes",
"age":18,
"height":2.1
};
print(info);
}
7.Dart的函数
//如何让函数的参数可传可不传?
两种方式:
1.通过[]将参数括起来是位置方式,值参会按顺序传参,如果不传为null
2.通过{}将参数括起来是命令方式,传参数时以key:value的形式传参
可以给可选参数设置默认值,必传参数不可设置默认值
void main(List args){
testFun1("li",18,29.1);
testFun1("li");
testFun1("li",16);
testFun2("li",age:12);
}
void testFun1(String name,[int age=20,double height]){
// age=20表示没有参数时,使用默认值20
print(name);
print(age);
print(height);
}
void testFun2(String name,{int age=20,double height}){
print(name);
print(age);
print(height);
}
函数可以作为另一个函数的参数传递
void main(List args){
testFun2(testFun1);
}
void testFun1(){
print("函数可以作为参数传递");
}
void testFun2(Function test){
test();
}
函数可以作为另一个函数的返回值
void main(List args){
Function tempFunc = testFun2();
tempFunc(); //调用返回的函数
}
void testFun1(){
print("函数可以作为另一个函数的返回值");
}
Function testFun2(){
return testFun1;
}
匿名函数的使用
void main(List args){
List nameList = ['xiaoming','xiaohong','xiaogang'];
//forEach()中要求传一个函数,可以通过 (参数) {} 直接定义一个匿名函数传入
nameList.forEach((item){
print(item);
});
//如果只有一行简单的代码,可以使用箭头函数
nameList.forEach((item)=> print(item));
}
map函数的使用
List nameList = ['xiaoming','xiaohong','xiaogang'];
final result = nameList.map((item)=> item+"hahaha");
print(result);
//将result转换为一个数组
final result = List.from(nameList.map((item)=> item+"hahaha"));
print(result);
8.类
main(List args){
// final p = new Person();
final p = Person(); //Dart 2.0以上版本 可以省略new
p.name="gao";
p.age = 12;
p.eating();
}
class Person {
String name;
int age;
void eating(){
print("${this.name}在吃早餐");
}
}
9.构造函数
1.无构造函数时,默认创建一个无参构造函数
2.Dart不支持构造函数的重载
main(List args){
// final p = new Person();
// final p = Person("xiaoming",12); //Dart 2.0以上版本 可以省略new
// final p = Person("xiaoming");
// final p = Person(name:"xiaoming", shengao:170);
Map params = {
"name":"Jerry",
"age":20,
"shengao":190
};
final p = Person.fromMap(params);
// p.name="gao";
// p.age = 12;
p.eating();
}
class Person {
String name;
int age;
int shengao;
//方式1
// Person(String name, int age){
// this.name = name;
// this.age = age;
// }
//方式2
// Person(String name,[int age,int shengao]){
// this.name = name;
// this.age = age;
// this.shengao = shengao;
// }
//方式3
// Person(String name,{int age,int shengao}){
// this.name = name;
// this.age = age;
// this.shengao = shengao;
// }
// //方式4
// Person({String name,int age,int shengao}){
// this.name = name;
// this.age = age;
// this.shengao = shengao;
// }
//方式5 语法糖写法,效果与方式4一致
、// Person({this.name, this.age, this.shengao});
//初始化列表 可以在:后面初始化列表
Person({this.name, this.age, this.shengao}) : twoAge = age * 2;
//方式6 通过传入map数据来创建构造函数
//命名构造函数
Person.fromMap(Map map) {
this.name = map["name"];
this.age = map["age"];
this.shengao = map["shengao"];
}
void eating(){
print("${this.name}在吃早餐");
}
}
10.抽象类
抽象类跟java中类似
默认类也是接口,可以被implements
11. dynamic和Object有什么区别?
Dart中默认所有类继承自Object
dynamic 可以动态指定类型
dart参数传方法_Dart语法相关推荐
- dart参数传方法_Flutter必备Dart语言快速入门
作为Flutter专属的开发语言(当然Dart不知如此,也可以开发Web和服务端),面对对象.高性能.多端一致.热更新是Dart的优势所在,是Flutter开发必须掌握的语言,也正是Flutter的流 ...
- dart参数传方法_为 JavaScript 开发人员准备的 Dart 参考教程
Dart 是 Flutter 主要的开发语言,这一篇文章主要为 JavaScript 开发人员准备的 Dart 教程,我会用很详细的对比来参考,力争 JavaScript 开发人员可以快速的熟练使用 ...
- 带参数的方法;导入包
一.带参数的方法 1.语法: <访问修饰符>放回值类型<方法名><(形式方法列表)>{ //方法的主体 } 2.调用带参方法 语法:对象名.方法名(参数1,参数2. ...
- JS利用apply方法,将数组直接当做参数传给函数
利用apply()方法. 语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象. 说明: 如果 argArray 不是一个有效的数 ...
- 二维数组的传参数的方法
如何将二维数组作为函数的参数传递 今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维 ...
- python get请求 url传参_用Python-get方法向页面发起请求,参数传不进去是怎么回事...
源自:4-1 接口测试工具-python-get接口实战 用Python-get方法向页面发起请求,参数传不进去是怎么回事 #-*-coding:utf-8-*- import urllib impo ...
- java方法传对象参数_Java方法中的参数太多,第2部分:参数对象
java方法传对象参数 在上一篇文章中 ,我研究了与方法和构造函数的长参数列表相关的一些问题. 在那篇文章中,我讨论了用自定义类型替换基元和内置类型以提高可读性和类型安全性. 这种方法使方法或构造函数 ...
- java怎么跟qtp脚本传参数_QTP多个Action之间传递参数的方法详解
脚本的朋友们都会碰到多个Action之间传递参数的问题,想当年我也是研究了好久才成功的,网上虽然有很多文章都在讲这个问题,但是大多都是雷同的抄来抄去不能解决实际问题,也有可能是我太笨了吧.下面我们来详 ...
- linux的 定时器传参数,JavaScript 定时器调用传递参数的方法
JavaScript定时器调用传递参数的方法,需要的朋友可以参考下. 无论是window.setTimeout 还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,而在许 ...
最新文章
- 顺风详解Nginx系列—Ngx中的变量
- getAttribute与getParameter的区别
- linux 查看正在执行的进程的pid编号_不小心执行 rm f,该如何恢复?
- 物化视图 sql server 1
- 社交网络图中结点的“重要性”计算
- VC++6.0快捷键
- SoapUI中文乱码
- 周跃计算机网络安全基础,华图网校金领名师模块班:计算机基础知识
- multisim 10 基本分析法的应用1
- Learning deep representations by mutual information estimation and maximization
- 圆点横线圆点 html,目录的点怎么打(目录中小圆点横线上的点要一个个打上去?)...
- 小米路由器3/3G/4通过串口(ttl)刷机
- c语言字母圣诞树,如何用C语言画一个“圣诞树”.pdf
- OpenDRIVE文件格式详解
- 全球自然奇迹Top50,中国上榜了3个
- uploadify上传控件
- ppt中讲演模式在哪里_滚动讲演的过去和现在
- 求助!PIP安装出问题
- 北大百练 4075. 矩阵旋转
- 开发者和苹果公司打交道需要注意的事情
热门文章
- 分布式计算系统导论(课后题)
- 2022-2027年中国可穿戴医疗设备行业市场深度分析及投资战略规划报告
- 5.2 Linux文件权限与归属
- 发生异常: NotADirectoryError Errno 20 Not a directory: xim.DS_Store
- 主成分分析(PCA)原理及过程
- SSH key的使用
- python-字典key的获取
- 2022年深圳杯A题破除“尖叫效应”与“回声室效应”走出“信息茧房”
- Linux内核版本介绍与查询
- mui开发安卓端,输入法软键盘导致css横屏样式判断触发