zoukankan      html  css  js  c++  java
  • [dart学习]第二篇:dart变量介绍 (一)

    前言

    本文的所有内容均是官方文档的简单翻译和理解,需要查看原文,请登录  https://www.dartlang.org/guides/language/language-tour  阅读, 让我们愉快地开始编程吧。

    再加一句:dart的关键字汇总及详细介绍我就不翻译搬运了,大家直接去上边的网址查看官方文档即可。

    第一部分:基础概念

    以下9条是直接翻译的,官方说希望你在学习dart时记住这些重要的概念

    1.dart将所有的变量都视为一个对象,所有的对象都看作一个类的实例,数字、函数、null也是对象,所有的对象都派生自Object类;
    2.dart是强类型的语言,类型注解仍然是可选的,因为dart能够推断类型。当你希望变量类型不被指定时,请使用dynamic类型;
    3.dart支持通用类型,如list<int>(整数列表)或list<dynamic>(任何类型的对象列表);
    4.dart支持顶级函数(如main())以及绑定到类或对象的函数(分别是静态方法和实例方法)。还可以在函数(嵌套函数或局部函数)中创建函数;
    5.dart支持顶级变量,以及绑定到类或对象的变量(静态变量和实例变量)。实例变量有时称为字段或属性
    6.dart没有public、private、protect关键字,如果一个变量以下划线(_)开头,通常表示其是库私有的;
    7.dart的标识符以字母或下划线开头,后跟任意的字符、数字组合;
    8.dart同时具有表达式(具有运行时值)和语句(不具有运行时值),语句通常包含一个或多个表达式,但表达式不能直接包含语句;
    9.dart编译工具通常会报告两种问题:警告和错误。

    第二部分:变量

    (1) var类型

    什么叫变量我们就不说了啊,能看到这文章的应该都了解这个。dart认为变量存储的是某个对象的reference(引用,标记),我们举个栗子(非完整代码):

    var name = 'Jack';

    上边那一行代码,var是一个类型关键字,name是变量名字,'Jack'是变量的值。

    var类型的变量,编译器会根据变量值的类型自动为该变量指定类型,例如上边的代码,系统会判定name变量为字符串类型,如果你这样写: var name = 36; 那么编译器就判断name是数字类型。

    使用var类型声明一个变量并赋值后,该变量的类型就确定了,不能再更改了,例如这样写代码(非完整代码):

    var name = 36;
    name = 'Jack';
    print(name);
    则会报错:
    Error: A value of type 'String' can't be assigned to a variable of type 'int'.
        Try changing the type of the left hand side, or casting the right hand side to 'int'.
         name = 'Jack';
    上边错误的原因是适用var声明变量name,并初始化为36,则编译器就会坚定地认为name是个int类型变量,当再次尝试为name变量赋值为String类型时,编译器就不同意了。
    那么这个时候有同学会问了“如果我想在使用的过程中,为某个变量随意赋任何类型的值可怎么办呢?”,不要紧,dart能够满足你,请看下文。

    (2) dynamic类型

    顾名思义,dynamic类型是允许程序员在使用过程中动态地改变变量类型的类型,我们看例子(非完整代码):

    dynamic name = 36;
    print(name);
    name = 'Jack Ma';
    print(name);

    这个例子很眼熟吧,就是上边那个。因为name被声明为了dynamic类型,因此我们可以对它先赋值int值,再赋值String值,这都没问题的,我们运行一下看看结果:

    Amazing! 没有报错,而且准确地打印出了我们的预期值。

    (3) 未初始化赋值的变量

    以上两个例子中,我们在变量声明的地方都给它初始化了,那么又有同学会问了“如果我声明一个变量,没有对它初始化,那么默认值是什么呢?” 这位同学很爱思考啊,接下来我们一起了解了解未初始化的情况。

    dart认为任何类型的变量,如果未初始化,其默认值都为null。 我们看例子(完整代码、可直接编译运行):

    main()
    {
        int a;
        if(null == a)
        {
            print("a is null
    ");
        }
        else
        {
            print("Test 
    ");
        }
    }

    我们的运行结果是   a is null 

    总结

    本文主要分享了dart的一些基本概念、思想和两种变量类型,其中:

    var类型的变量,系统会根据其初始化值为其确定类型,且确定之后不能再更改;

    dynamic类型的变量,在使用中可以随时改变其类型,系统会根据该变量的当前值类型确定其当前时刻的类型;

    若声明了某个类型的变量但未对其初始化,则系统认为该变量当前值为null。

  • 相关阅读:
    关于C++中的友元函数的总结
    一个使用动态链接库资源出错的难题
    如何在对话框中实现文件拖放功能
    VS2005设置可以在Release模式下调试 .
    6 Tips for Managing Property Files with Spring
    Linux命令行下SSH端口转发设定笔记_leo_百度空间
    Array properties in Spring Framework
    关于前端产品呈现形态及早期推进
    不要等离别的再珍惜,过好每一天啊
    Django snippets: uuid model field
  • 原文地址:https://www.cnblogs.com/gklovexixi/p/10525710.html
Copyright © 2011-2022 走看看