zoukankan      html  css  js  c++  java
  • Scala变量

    变量是只不过是保留内存位置来存储值。这意味着,当创建一个变量,会在内存中保留一些空间。

    基于变量的数据类型,所述编译器分配存储器,并决定什么可以被存储在保留存储器。因此,通过分配不同的数据类型的变量,可以存储整数,小数,或字符在这些变量。

    变量声明

    Scala有两种变量,val和var。val类似于Java里的final变量。一旦初始化了,val就不能再被赋值。相反,var如同Java里面的非final变量,可以在它的生命周期中被多次赋值。

    即,常量或变量。

    下面是使用var关键字来定义一个变量的语法:

    scala> var myVar : String = "Foo"
    myVar: String = Foo
    
    scala>

    在这里,myVar使用关键字var声明。这意味着它是一个可以改变值的变量,被称为可变变量。下面是使用val关键字来定义变量的语法:

    scala> val msg = "hello world"
    msg: String = hello world
    
    scala>

    这里,myVal是使用关键字val声明。这意味着,它是不能改变的变量,这是所谓的不可变变量

    scala> var myVar : String = "Foo"
    myVar: String = Foo
    
    scala>
    
    scala> myVar = "duan"
    myVar: String = duan
    
    scala> val msg = "hello world"
    msg: String = hello world
    
    scala> msg = "duan"
    <console>:12: error: reassignment to val
           msg = "duan"
               ^
    
    scala>

    变量数据类型:

    变量类型在变量名后面指定,前在equals之前签署。可以通过它的数据类型定义任何类型的Scala变量如下:

    val or val VariableName : DataType [=  Initial Value]

    如果不指定任何初始值变量,那么如下所示它是有效的:

    var myVar :Int;
    val myVal :String;

    变量类型推断:

    当分配一个初始值给一个变量,Scala编译器可以计算出根据分配给它的值的变量类型。这就是所谓的变量类型推断。因此,可以写这些变量的声明如下这样:

    var myVar = 10;
    val myVal = "Hello, Scala!";

    在这里,默认情况下,myVar是int类型,将设为myVal为字符串类型变量。

    多重任务:

    Scala支持多任务。如果一个代码块或方法返回一个元组,该元组可被分配给一个val变量。 [注:元组在以后的章节中学习。]

     
     
    val (myVar1: Int, myVar2: String) = Pair(40, "Foo")

    类型推断得到正确类型:

    val (myVar1, myVar2) = Pair(40, "Foo")

    变量类型:

    Scala变量可以有三种不同的范围,这取决于它们正在使用的地方。它们可以存在于字段,方法参数和局部变量。下面是关于每种类型的适用范围的详细信息:

    字段:

    字段是属于一个对象的变量。该字段是从对象中的所有方法中访问。字段也可以是具体取决于访问修饰符字段与声明的对象外访问。对象字段既可以是可变的或不可变的类型,可以使用var 或 val两种定义。

    方法参数:

    方法的参数是变量,其用于传递方法内的值在方法被调用时。方法参数被从方法唯一传入,但传递的对象可从外面,如果从外面的方法有一个引用对象。方法参数始终是可变的并由val关键字定义。

    局部变量:

    局部变量是在方法内声明的变量。局部变量只能在方法中访问,但可以访问创建方法的对象(如果从方法中返回它们)。局部变量既可以是可变的或不可变的类型,可以使用var或val两个关键字定义。

  • 相关阅读:
    Nginx TCP Proxy模块的编译安装
    树形dp hdu-4616-Game
    UVA 10405 Longest Common Subsequence (dp + LCS)
    MVC中使用EF(2):实现基本的CRUD功能
    [置顶] 关于Qt的学习
    BNU 26480 Horror List【最短路】
    汉语-词语-爱惜:百科
    汉语-词语-珍惜:百科
    汉语-词语-无知:百科
    汉语-词语-愚蠢:百科
  • 原文地址:https://www.cnblogs.com/duanxz/p/6342382.html
Copyright © 2011-2022 走看看