跟我学scala(一)基础、控制结构和函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了跟我学scala(一)基础、控制结构和函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2698字,纯文字阅读大概需要4分钟。
内容图文

一:基础
变量和常量
val age = 10; //生成一个常量,推荐使用常量,缺点不可变
var name,classId = "100"; //生成两个变量name,classid 同时赋值为100
val name,classId :String = 100 //声明变量的同时声明变量的类型,可以不声明,由scala推导得出
常用类型
Byte、Char、Short、Int、long、Float、Double、Boolean、BigInt、BigDecimal
算术和运算符的重载
val data = 1.+(2) 类似这种的写法,个人感觉:大部分都是Java转过来的,所以还是尽量使用 val data = 1 + 2
调用方法和函数
Scala中调用方法和函数的差别是:scala中可能不需要加上前面的类
例如:pow(2,4) 但是前提是你需要使用 import scala.math._
apply方法
apply方法在不同对象调用的时候是不同方法的:
例如: val data = “123456”.apply(2) //结果3 String 方法就是获取对应位置的字符:
val age = Array.apply(1,2,3,4) //数组方法就是初始化值为数组的内容
二:控制接口和函数
条件表达式
val data = if(1 > 2) "aa" else 12 //假如条件表达式成立的话返回字符串,否则的话返回数字
如果if后面的语句很长的话,用{}括起来,不能换行,会报错
终止语句
scala中;不是必须的。所以可以省略不写,但是如果一行有两条语句的话是必须写的。
如果语句过长,可以使用 \\ 告诉编辑器还没有结束
块表达式和赋值
scala中可以将一整块的代码最终的结果赋值给一个变量或者常量。
例如:val data = {val i = 10; val j = 14; scala.math.pow(i,j)}
输入和输出
输出比较常用,直说输出:
print(data) //不换行打印
println(data) //换行打印
printf("aa %s bb cc %d dd ee","aa",42 ) //C语言格式的打印
循环
var i =10
while(i > 0){
println(i)
i -= 1
} //while循环
for(i <- 1 to 10)
println(i) //1到10的循环(1和10都有的)
for(i <- 1 until 10)
println(i) //1到10的循环(1有、10没有)
高级for循环和for推导式
双层for循环:
for(i <- 1 to 3 ; j <- 5 to 7 )
println(i * j) //输出结果9个 :5 6 7 10 12 14 15 18 21
双层for循环+条件表达式:
for(i <- 1 to 3 ; j <- 1 to 3 if i != j)
print(i * j + " ") //输出结果6个:2 3 2 6 3 6
双层for循环的另一类写法:
for(i <- 1 to 3 ; data = 4 -i ; j <- data to 3)
print(i +" "+ j + "|") //输出结果6个:1 3|2 2|2 3|3 1|3 2|3 3|
//循环生成数组内容
val data = for(i <- 1 to 3 ) yield i //Vector(1, 2, 3)
函数
def fac() = {
var data = 1
for(i <- 1 to 10) data = data.*(i)
data
} //将1到10的数字相乘作为函数的返回值。可以不用现实的写return,默认最后一个表达式就是返回值。
递归函数必须要有返回值的标识,否则编辑器会报错
def fac(n:Int):Int = {
if(n > 0) n*fac(n-1) else 1
}
默认参数和带名参数
def decorate(left:String="[",right:String="]") = {
println(left + "|" + right)
} //函数有两个默认参数:left和right,有默认值“[”“]”
调用的时候可以只写一个参数:
decorate("a") //默认是第一个参数接收,也可以规定接收的参数
decorate(right = "a") //第二个参数接收字符串
变长参数
def decorate(left:Int *) = {
for(i <- left) println(i)
} //参数是可变的,这点和Java一致的
//调用方法的时候,可以传递一个数组,但是需要后加上 :_ *
decorate(1 to 10: _*)
过程
过程其实就是方法,只不过没有 =
def decorate(left:Int *) {
for(i <- left) println(i)
}
懒值
lazy val aa = Source.fromURL("https://www.baidu.com/index.php").mkString("|")
//值aa等到使用的时候才会去加载。但是每次访问的时候都需要检测一下该值是否被初始化,慎重使用
异常
try{
val file = new File("D:\\JAVA\\data\\13.txt")
}catch{
case ex:FileNotFoundException => println("file not found")
case ex:Exception => println("Exception")
}finally{
println("close mem")
}
原文:https://www.cnblogs.com/wuxiaolong4/p/11816184.html
内容总结
以上是互联网集市为您收集整理的跟我学scala(一)基础、控制结构和函数全部内容,希望文章能够帮你解决跟我学scala(一)基础、控制结构和函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。