
1-scalahelloworld创建object对象object Ahelloworld { def main(args: Array[String]): Unit { } }定义方法格式 def defname (参数名称参数类型)返回值类型{方法体 }2-变量和数据类型1注释同java1-2-32变量var 变量名 [数据类型]初始值 var i:int10val 变量名 [常量类型]初始值 val i:int10可以省略[数据类型]scala强数据类型声明时必须要有初始值3标识符命名规范*1字母数字下划线*2以操作符开头包含操作符*3用~~反引号4字符串01号连接02格式化输出03字符串模板$println(s${i})println( 多行文 |本输出.stripMargin)5输出01输出StdIn.readLine()StdIn.readInt()...var ssStdIn.readLine()02文件输出*1从文件中读取数据Source.fromFile(src/main/resources/数据).foreach(print)*2将数据写入文件val wrinew PrintWriter(new File(src/main/resources/1.txt)) wri.write(hello) wri.close(6数据类型 AnyAnyVal AnyRef整数类型Byte Short Int Longval byteValue: Byte 127 val shortValue: Short 32767 val intValue: Int 2147483647 val longValue: Long 9223372036854775807L 浮点类型DoubleFloatval floatValue: Float 3.14f val doubleValue: Double 3.141592653589793字符类型char布尔类型Booleamval charValue: Char A val stringValue: String Hello, Scala! val booleanValue: Boolean trueUnit类型 Null类型 和 Nothing类型Unit:表示无值 和void同等 只有一个实例值Null只有一个实例值nullNothing:是其他类型的子类型。。类型转换var ii:Float2.356fvar siii.toInt3-运算符逻辑与(AB) false A-true B-false||逻辑或 true非4-流程控制if-elseif-else if -else bif有返回值 类型可以用公共父类val aa:Stringif (ab){ println(4) 你好 }else{ println(5) 看见 } println(aa)for循环控制1.范围遍历//范围遍历 for (i-0 to 9){ println(i) } for (i-1.to(10)){ println(i) }for(i-Range(1,10)){ println(i)//不包含10 } for (ii- 1 until 10){ println(ii)//不包含10 }2.集合遍历//集合遍历 for (i-Array(12,13,14,12,14)){ println(i) }3.循环守卫 循环保护式//循环守卫 for (i- 1 to 10 if i!5){ println(i) }4.循环步长//循环步长 for (i- 1 to 10 by 2){ println(i) } //下面都是反转 for (i - 100 to 10 by -20) { println(i) } for (i - 1 to 10 reverse) { println(i) } //小数 for (i - 1.0 to 10.0 by 0.5) { println(i) } for (i- 1 to 10 by 3 if i!3 )5.循环引入变量for(i - 0 to 10; j10-i){ println(ij) }6.九层金字塔案例object D_for_san { def main(args: Array[String]): Unit { for (i- 1 to 9;s2*i-1;sp9-i){ println( *sp**s) } } }7.循环返回值val unit for (i - 0 to 10) yield i println(unit)8.while ——dovar w 0 while (w10) { w1 println(w) }9.循环中断Breaks.breakable( for (i- 0 to 10){ if (i3){ Breaks.break() }else{ println(i) } } )5_函数式编程函数def sum (x:int,y:int)int{ xy }整合示范代码object FunctionDemo { // 定义基础函数sum接受两个整数参数返回它们的和 def sum(x: Int, y: Int): Int x y // 定义高阶函数applyFunction接受一个函数f和两个整数参数应用f并返回结果 def applyFunction(f: (Int, Int) Int, a: Int, b: Int): Int f(a, b) // 定义递归函数factorial计算阶乘展示函数式递归 def factorial(n: Int): Int { if (n 1) 1 else n * factorial(n - 1) } def main(args: Array[String]): Unit { // 变量声明使用val不可变和var可变省略数据类型Scala自动推断 val num1 10 var num2 20 println(s初始值: num1 $num1, num2 $num2) // 调用sum函数 val resultSum sum(num1, num2) println(ssum函数结果: $num1 $num2 $resultSum) // 使用高阶函数applyFunction传入sum函数 val appliedResult applyFunction(sum, num1, num2) println(s高阶函数应用(sum): $appliedResult) // 使用匿名函数lambda表达式定义乘法函数 val multiply (x: Int, y: Int) x * y val product applyFunction(multiply, num1, num2) println(s匿名函数应用(乘法): $num1 * $num2 $product) // 流程控制if表达式有返回值 val maxValue if (num1 num2) num1 else num2 println(sif表达式返回值: 最大值是 $maxValue) // 输入操作从控制台读取数据 println(请输入一个整数) val userInput scala.io.StdIn.readInt() println(s您输入的数字是: $userInput) // 递归函数调用计算阶乘 val factResult factorial(userInput) println(s递归阶乘结果: $userInput! $factResult) // 集合操作创建列表使用map和filter val numbers List(1, 2, 3, 4, 5, userInput) val squares numbers.map(x x * x) // map计算平方 val evens numbers.filter(_ % 2 0) // filter过滤偶数 println(s集合操作 - 原列表: $numbers) println(smap应用(平方): $squares) println(sfilter应用(偶数): $evens) // for循环演示包括范围遍历、循环守卫、步长控制和yield返回值 println(for循环演示:) // 范围遍历 (1到5) for (i - 1 to 5) { println(s范围遍历: i $i) } // 循环守卫跳过特定值 for (i - 1 to 10 if i ! 5) { println(s循环守卫(i ! 5): i $i) } // 步长控制步长为2 for (i - 1 to 10 by 2) { println(s步长控制(by 2): i $i) } // for表达式使用yield返回新集合 val doubled for (i - numbers) yield i * 2 println(sfor表达式yield结果: 原列表$numbers 加倍后: $doubled) // 文件操作写入数据到文件 val filePath src/main/resources/output.txt val writer new java.io.PrintWriter(new java.io.File(filePath)) writer.write(s计算结果:\n) writer.write(ssum: $resultSum\n) writer.write(sproduct: $product\n) writer.write(s阶乘: $factResult\n) writer.write(s集合加倍: $doubled\n) writer.close() println(s数据已写入文件: $filePath) // 文件操作从文件读取数据 val source scala.io.Source.fromFile(filePath) val fileContents source.getLines().mkString(\n) source.close() println(s文件内容:\n$fileContents) // 多行字符串输出 val multiLineText |多行文本输出示例: |这是第一行 |这是第二行 |.stripMargin println(multiLineText) } }代码说明函数式编程核心sum函数作为基础演示简单函数定义。applyFunction高阶函数展示如何将函数作为参数传递。匿名函数multiply用于动态行为。递归函数factorial体现函数式递归思想。使用val确保数据不可变符合函数式原则。流程控制if表达式直接返回结果如maxValue。for循环包括多种形式范围遍历、守卫条件if i ! 5、步长控制by 2以及yield生成新集合。输入输出从控制台读取用户输入StdIn.readInt()。格式化输出使用字符串模板s$variable。文件读写写入计算结果到文件并读取显示内容。集合操作使用map和filter处理列表体现函数式转换。运行方式将此代码保存为.scala文件如FunctionDemo.scala。使用Scala编译器或IDE运行。程序会提示输入执行后输出结果并生成文件。这个代码覆盖了您笔记中的所有关键点并专注于函数式编程的实践。