首页 > 其他分享 >scala入门基础(1)

scala入门基础(1)

时间:2024-09-06 19:54:51浏览次数:14  
标签:变量 val scala 基础 name Enter var 入门

一。思维导图    8efbc8d774834d43a3fb13cbb0378179.jpg

 二。案例

案例1.

分别使用val和var定义一个变量name

使用val同时声明多个变量。

操作步骤:

(1)打开Windows命令控制台,输入scala并按【Enter】键,进入Scala的解释器。

(2)使用val定义一个变量name。输入val name="scala"并按【Enter】键,可以看到变量定义成功,并且成功推断出其变量类型为String,如下所示(⚠️标点符号需使用英文)

scala>val name="scala"

 

name: String = scala

scala>

(3)修改上一步定义的变量name的值。输入 name="java"并按【Enter】键,结果提示报错,原因就是用val声明的变量值不能进行修改,如下所示(⚠️标点符号需使用英文)

scala> name= "java"

<console>:12:error:reassignment to val

        name= "java"

                       (提示报错)

(4)要想修改变量值,可以使用var定义变量name。使用var重新定义变量name。输入var name="scala"并按【Enter】键,可以看到变量已定义成功,接着输入name="java"并按【Enter】键,可以看到变量值已被成功修改,如下所示。

scala> var name="scala"

name:String = scala

scala>name="java"

name:String = java

scala>

    (使用var定义变量name并修改变量值)

⚠️注意:其实Scala中使用val声明的变量不可重赋值这一点,就相当于Java中用final关键字修饰的变量,因为经过final修饰的变量值同样不可被改变。

(5)使用val同时声明多个变量。输入val a,b=3并按【Enter】键,可以看到成功声明了两个整变量a、b并均赋值为3,如下所示。

scala> val a, b=3

a: Int =3

b:Int = 3

           (用val同时声明多个变量)

(6)使用var同时声明多个变量。输入var x,y="scala"并按【Enter】键,可以看到成功声明了个字符串型变量x、y并均赋值为scala,如下所示。

scala> var x, y="scala"

x:String = scala

y:String = scala

          (用var同时声明多个变量)

(7)修改变量值的类型,使其与声明变量时指定的类型不同。输入 var name="scala"并按【Enter】键,声明一个字符串类型的变量name,接着输入name=2并按【Enter】键,结果提示类型不匹配,如下所示,这里出错的原因就在于重新赋予的变量值类型(2是整型值)与声明变量时指定的类型(字符串型)不一致。

scala> var name="scala"

name:String = scala

 

scala >name=2

<console>:12:error:type mismatch;

found       :Int (2)

required:String

        name=2

                        (结果报错)

⚠️ 注意:由于Scala是一种强类型的语言,因此在声明变量时指定的数据类型与所赋值的数据类型一定要匹配,否则就会报错。

 

案例2.

演示Scala的lazy变量的惰性求值。

操作步骤:

(1)打开 Windows命令控制台,输入scala并按【Enter】键,进入Scala解释器。

(2)用val声明一个变量并赋值。输入val name="shf"并按【Enter】键,可以看到值shf马上就赋给了变量name,如下所示。

scala> val name="shf"

name: String = shf

                 (声明变量并赋值)

(3)重复上一步的操作,但是这次使用lazy修饰变量。输入lazy val name="scala”并按【Enter】键,可以看到值scala并没有马上赋给变量name,而是显示<lazy>,如下所示。

scala> lazy val name="scala"

hame:String =<lazy>

             (使用lazy修饰变量的结果)

(4)用lazy修饰的变量,只有在使用时才会被真正赋值,此处调用一下name。输入name并按【Enter】键,可以看到值scala已赋给变量,如下所示。

scala> name

res7:String= scala

                (值scala已赋给变量)

(5)用var声明的变量能否用lazy修饰。输入lazy var name="df"并按【Enter】键,结果报错,提示lazy不可与var合用,只能用来修饰用val声明的变量,如下所示。

scala> lazy var name="df"

<console>:1: error: lazy not allowed here. Only vals can be lazy

       lazy var name="df"

                        (结果报错)

——这就是一个惰性求值的简单案例。所谓惰性求值,其实就是说在声明变量时,并不会给变量分配内存空间,只有在使用变量时才会分配。

 

 

标签:变量,val,scala,基础,name,Enter,var,入门
From: https://blog.csdn.net/2401_82393217/article/details/141828770

相关文章

  • java集合基础练习题
    List集合.ArrayList,LinkedList,Vector三者的相同点与不同点?(“Vector”可百度)【面试题】共同点:他们都实现了List接口,意味着他们具有相同的基本操作,如添加、删除、获取元素有序性和可重复性,他们都是有序的,即插入顺序和迭代顺序相同,都允许存储重复的元素都可以动态调整大......
  • 数列分块入门
    分块是一种优秀的思想。“数据”是分块的目的。不同于大多数树形数据结构,分块中访问数据是容易的,因此,它可以用比前者更简单的方式支持复杂的操作。“标记”是分块最重要的过程。不同于大多数树形数据结构,分块大多数时候不需要支持标记与标记合并,因此,它能完成一些前者不能完成的......
  • python测试开发基础---threading
    1.核心概念线程(Thread):线程是轻量级的进程,在同一进程内可以并行执行多个任务。线程共享进程的资源,如内存和文件描述符,但每个线程有自己的执行栈和局部变量。全局解释器锁(GIL):Python中的GIL限制了同一进程中多个线程的真正并行执行。它确保同一时间只有一个线程可以执行Pyth......
  • python测试开发基础---multiprocessing.Pool
    1.基础概念多进程编程:Python中的multiprocessing模块允许你使用多个进程并行执行任务,这可以提高程序的性能,尤其是在需要大量计算的情况下。Pool类是一个常用工具,可以帮助你更轻松地管理多个进程。进程池:进程池是一个包含多个工作进程的池子,用来处理多个任务。你可以将任......
  • 【整理】【Jinja2 模板】基础
    Jinja2是基于python书写的模板引擎。jinja2必知必会1、jinja2文件以.j2为后缀,也可以不写后缀。2、jinja2中存在三种定界符注释:{{##}}变量引用:{{var}}逻辑表达:{%%}3、jinja2逻辑控制条件表达:{%if%}......{%endif%}案例:循环控制:案例:注意:......
  • 基础篇:到底应该怎么理解“平均负载”
    root@Test-MySQL:/home/zoom/test#uptime08:41:38up3days,5:40,2users,loadaverage:0.00,0.03,0.02我相信你对前⾯的⼏列⽐较熟悉,它们分别是当前时间、系统运⾏时间以及正在登录⽤户数。⽽最后三个数字呢,依次则是过去1分钟、5分钟、15分钟的平均负载(LoadAvera......
  • PHP8面向对象快速入门五 接口 抽象类
    在PHP中,接口是一种定义方法但不实现它们的方式。接口可以被类实现,使得这些类承诺实现接口中定义的所有方法。接口主要用于定义类的共同行为,而不涉及具体的实现细节。以下是PHP接口的基本用法:定义接口interfaceAnimal{publicfunctionmakeSound();publicfunct......
  • 信息学奥赛初赛天天练-84-NOIP2014普及组-基础题3-总线、存储器、邮件协议、二叉树、
    信息学奥赛初赛天天练-84-NOIP2014普及组-基础题3-总线、存储器、邮件协议、二叉树、满二叉树、顶点的度、无向图、有向图PDF文档公众号回复关键字:202409061NOIP2014普及组基础题36CPU、存储器、I/O设备是通过()连接起来的A接口B总线C控制线D系统文......
  • 通义灵码怎么样?分为哪些版本,看看基础能力多少分?
    通义灵码,是一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云的云服务使用场景调优,助力开发者高效、流畅的编码。下载使用通义灵码:<https://tongyi.ali......
  • 通义灵码怎么样?分为哪些版本,看看基础能力多少分?
    通义灵码,是一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云的云服务使用场景调优,助力开发者高效、流畅的编码。下载使用通义灵码:<https://tongyi.ali......