Scala基础
2021/10/15 23:17:12
本文主要是介绍Scala基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、什么是Scala:
直观的来说,加强版Java。一种脚本语言 ,可以直接使用Java的类库。
特点:面向对象编程,函数式编程
Scala会有三类事务,Class、Object、Trait。在Scala中把静态的和非静态的严格分开
Class中能编写非静态的东西;
Object中只能编写静态的,我例如Java中的main方法,它是静态的,在Scala中就要写道Object里。
简单的举个例子:
object Scala { def func1 = println("Hello Zyp") def main(args: Array[String]): Unit = { /* 写个main方法,直接调用函数 */ func1 } }
在上面的代码中: 1. object里面都是静态方法(以及变量等) 2. 数据类型跟在变量后面,中间用“ :”隔开 3. 返回值在参数完成的后面,方法体是以“ = ”来赋值 4. 语句末有无 ”;“ 都可
在Scala中我们声明" func1 "这个函数,他其实是个变量,这就是这个语言不同于java的地方,完全面向对象编程,是函数语言。每一个函数在Scala中都是一个值,当我们定义一个函数的时候就是定义了一个变量。
Scala中的函数:高阶函数、柯里化函数、内嵌函数(函数中定义函数)等。
高阶函数: 函数的参数可以传递函数
克里化函数: 函数可以拆分,部分执行。
二、Scala中的变量和函数:
1. 定义变量:
修饰符:var \ val
var 代表一个变量 ;val 代表一个常量
def main(args: Array[String]): Unit = { var n =10 n=11 //变量可以再次赋值 } def main(args: Array[String]): Unit = { val n:Int =10 n=11 //会报错 Reassignment to val }
从上面的声明变量还可以看出:在Scala中,类型可以不给。(Scala中没有基本数据类型,全是引用数据类型)
2. 定义函数:
关键字:def
def func2(a:Int,b:Int):Int = return a+b
1. 返回值关键字 "return" 可写可不写
2. :Int 表示的是返回值类型,没有返回值就是Unit
3. 这里的参数类型是变量,也可以用函数作为参数(因为scala中一切皆对象)
例如:
def square(x: Int) = { println(x) x * x } def printByName(x: => Any): Unit = { println(x) } def main(args: Array[String]): Unit = { printByName(square(5)) }
先执行square,把整个函数作为参数传递给X,那么就会先打印5再返回25
3. scala中的循环:
打印1-10:
for (i <-1 to 10){ println(i) }
隔两个打印一个数隔两个打印一个数:(步长为2)
for (i <-1 to 10 by 2){ //by 自增的意思 print(i+" ") } 打印结果为: 1 3 5 7 9
用ForEash的方式:
(1 to 10 by 2).foreach( println(_) _的意思是当前,当前这个数 ) 但是你如果不想用下划线的话可以如下: (1 to 10 by 2).foreach( 推出的方式 x =>println(x) )
4. Scala中的数据类型:
Scala所有类型都是Object,顶级的类叫做ScalaObject.我们定义的所有的类都叫做ScalaObject。ScalaObject下面呢就是最根基的类叫做Any,就是任意类型,下面两个体系:值类型(AnyVal)和引用类型(AnyRef)
数值这些类型(Int Boolean char..)归为值类型(AnyVal)
String和数组,列表这些都归为引用类型(AnyRef)
Null:是一个类,在Java和Scala中小写的Null是一个值,大写的Null是一个类,类型,不允许再被继承,是一个终止的特征,继承了引用类型(AnyRef)
Nothing:没有实例对象的一种数据类型,它的父类是Any(顶级的)
Unit:代表的是一个值类型,类似于 yuabzuJava中void
三、Tuples元组
1.
这篇关于Scala基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02在 Objective-C 中strong 和 retain有什么区别-icode9专业技术文章分享
- 2024-11-02NSString 中的 hasPrefix 有什么作用-icode9专业技术文章分享
- 2024-11-02在 C 和 Objective-C 中inline的用法是什么-icode9专业技术文章分享
- 2024-11-02文件掩码什么意思?-icode9专业技术文章分享
- 2024-11-02在 Git 提交之前运行 composer cs-fix 命令怎么实现-icode9专业技术文章分享
- 2024-11-02为 Composer 的 cs-fix 命令指定一个目录怎么实现-icode9专业技术文章分享
- 2024-11-02微信公众号开发中怎么获取用户的 unionid-icode9专业技术文章分享
- 2024-11-01lip-sync公司指南:一文读懂主要玩家和技术
- 2024-11-01Anthropic的新RAG方法——提升大型语言模型在特定领域的表现
- 2024-11-01UniApp 中组件的生命周期是多少-icode9专业技术文章分享