注:主要是对一些常用的语句进行案例演示
//高阶函数的练习
/*
* 编写函数,输出一个集合
* 对应给定区间内给定函数的输入和输出
*/
object _01Demo {
def main(args: Array[String]): Unit = {
println(f1(x => x * x, -4, 4).mkString)
//(4,16)(3,9)(2,4)(1,1)(0,0)(-1,1)(-2,4)(-3,9)(-4,16)
def f1(fun: (Int) => Int, low: Int, high: Int) = {
var array = List[(Int, Int)]()
low to high foreach{
x =>
array = (x,fun(x)) :: array
}
array
}
}
}
//样例类
object _02Demo {
def main(args: Array[String]): Unit = {
//获取样例类
val per:Person = Person("lisi", 18, 'M')
//属性名操作属性
println(per)
println(per.age)
//Person(lisi,18,M)
//18
}
}
/**
* 定义样例类:可以不适用new进行对象的创建
* 类名首字母大写
* 关键字 case
* 可以直接通过属性名操作属性
*/
case class Person(name:String,age:Int,gender:Char)
//伴生对象
object _03Demo {
def main(args: Array[String]): Unit = {
Person3.m3
Person3.apply("HELLO")
//通过伴生对象,去掉new关键字
val per:Person3 = Person3("Lisi")
println(per)
//hello
//_name:HELLO
//name:HELLO
//_name:Lisi
//name:Lisi
//com.qf.scala.exercise.day04._03Demo$Person3@7e0babb1
}
/**
* class:伴生类 object:伴生类对象
* object中的方法都是静态方法,可以直接通过类名调用
* apply是一个特殊方法,可以直接 类名() 调用
*/
//定义伴生类
class Person3(name:String){
var _name:String = name
println("_name:"+_name)
println("name:"+name)
}
//定义伴生类对象
object Person3 {
def m3 = {
println("hello")
}
//apply方法
def apply(name:String):Person3 = new Person3(name)
}
}
//高阶函数
object _04Demo {
def main(args: Array[String]): Unit = {
//m4函数式传进来什么就打印什么
m4(x=>"world")
}
/**
* scala 面向函数式编程
* 基本单位:函数 也应该有对应的类型
* 函数类型:由参数类型和返回值决定
* 函数也可以作为参数传入方法内
* 函数也可以作为返回值
*/
//函数作为参数
def m4(f:String=>String)={
val str:String = f(" ")
println(str)
}
}