61c02dc478e51a0828eaa771d4f943ccde528cc2.jpg

Scala 开发教程.jpg

Scala 基础

  • 定义变量
# 字符串常变量
val girl = "诸叶"
# 字符串变量
var weapon = "俱利伽罗丸"
  • 定义函数
# 有返回值
def transform(rouge:Boolean) : String ={if (rouge) "崩国的红夜叉"
else"无变化"
}
# 无返回值
def skill() = println("红龙破")
  • 判断
var modern = true
val current = if (modern) "现代" else "战国时代"
  • 循环
# while
val girls = Array("永远","刹那","诸叶")
var i = 0
while (i < 3) {println(girls(i))i += 1
}
# for
for (girl <- girls)println(girl)
# foreach
girls.foreach(println)
  • 数组
val weapons = Array("菊十文字","兼光之巴","俱利伽罗丸")
for(i <- 0 to 2)print(weapons(i))
  • 列表
# 定义
val pearls = List("银色珍珠","金色珍珠","红色珍珠")
# 打印
print(pearls)
# 取List的首元素
pearls.head
# 判断List是否为空
pearls.isEmpty
# 取除首元素之外的List的其它元素
pearls.tail
# 逆转List中元素的顺序
pearls.reverse
# 返回除前1个元素的List余下的元素
pearls drop 1
# 返回List的前1个元素
pearls take 1
# 把一个List在指定位置分成两个List
pearls splitAt 1
# 展开List
pearls.flatten
# zip
pearls.indices zip pearls
pearls zip List(1,2,3)
# unzip
pearls.zipWithIndex.unzip
# 显示List的正规字符表示
pearls.toString
# 格式化List显示
pearls.mkString
# map
pearls map(_+"x1")
pearls map(_.length)
# flatMap
pearls flatMap(_.toList)
# 过滤List
pearls filter (_=="银色珍珠")
  • 元组
val fathers = ("杀生丸","犬夜叉")
print(fathers._1)
  • 集合
# Set
var girls = Set ("诸叶","刹那")
girls += "永远"
print(girls.contains("芽衣"))
# Map
val weapons = Map( "永远" -> "菊十文字","刹那" -> "兼光之巴","诸叶" -> "俱利伽罗丸")
print(weapons("永远"))
  • 读取文件
import scala.io.Source
var file_content = Source.fromFile(文件路径)
  • 异常处理
import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException
try {val f = new FileReader(文件路径)
} catch {# 处理不存在的文件case ex: FileNotFoundException =># 处理IO错误case ex: IOException =>
}

类和对象

# 定义
class Weapon (w1:String, w2:String, w3:String) {print(w1+"\n"+w2+"\n"+w3)
}
# 调用
new Weapon("菊十文字", "兼光之巴", "俱利伽罗丸")
  • 对象
# 定义
object Pearl {print("七彩珍珠")
}
# 调用
Pearl
  • toString
# 定义
class Weapon (w1:String, w2:String, w3:String) {override def toString = w1+"\n"+w2+"\n"+w3
}
# 调用
new Weapon("菊十文字", "兼光之巴", "俱利伽罗丸")
  • require
# 定义
class RedPearl (color:String) {require(color == "红色")override def toString = "红色珍珠"
}
# 调用
new RedPearl("红色")
  • 成员变量
# 定义
class Pearl (c:String) {val color = coverride def toString = c+"珍珠"
}
# 调用
val p = new Pearl("金色")
p.color
  • 私有成员变量
# 定义
class Pearl (c:String) {# 不能被访问private val color = coverride def toString = c+"珍珠"
}
# 调用
new Pearl("银色")
  • 辅助构造函数
# 定义
class Pearl (p:String, n:String) {override def toString = p+"x"+ndef this(p:String) = this(p, "1")
}
# 调用
new Pearl("银色珍珠")
  • 私有成员方法
# 定义
class Girl (name:String) {val pearl = getPearl(name)override def toString = pearlprivate def getPearl(name:String):String =if (name == "永远") {"银色珍珠"} else if (name == "刹那") {"金色珍珠"} else if (name == "诸叶") {"红色珍珠"} else {"未知"}
}
# 调用
new Girl("永远")
  • 隐式参数
# 定义
class GoldPearl (implicit n:Int) {override def toString = "红色珍珠x"+n
}
# 调用
implicit val n = 1
new GoldPearl()

函数

  • 成员函数
# 定义
import scala.io.Source
object Girl {def weapon(w:String) {skill(w)}private def skill(w:String){print(w+"-旋风阵")}
}
# 调用
Girl.weapon("兼光之巴")
  • 局部函数
# 定义
import scala.io.Source
object Girl {def weapon(w:String) {def skill(){print(w+"-旋风阵")}skill()}
}
# 调用
Girl.weapon("兼光之巴")
  • 函数字面量
val skills = (_:String )+"+"+(_:String)
skills("旋风阵", "红龙破")
  • 闭包函数
# 定义
def attack(weapon:String) = (skill:String) => weapon+"-"+skill
# 调用
val attack1 = attack("兼光之巴")
attack1("旋风阵")
val attack2 = attack("俱利伽罗丸")
attack2("红龙破")
  • 重复参数
# 定义
def attack(skills:String *) = for (skill <- skills) println(skill)
# 调用
attack("旋风阵", "破魔之箭")
  • 命名参数
# 定义
def attack(weapon:String, skill:String) :String = weapon+"-"+skill
# 调用
attack(weapon="兼光之巴", skill="旋风阵")
  • 缺省参数
# 定义
def attack(weapon:String="兼光之巴", skill:String="旋风阵") :String = weapon+"-"+skill
# 调用
attack(skill="宿蛾之月")
  • 递归函数
def travel(times:Int):Int = {if (times == 0)0elsetravel(times-1)
}
  • 柯里化函数
# 定义
def attack(weapon:String)(skill:String) = weapon+"-"+skill
# 调用
attack("兼光之巴")("宿蛾之月")
  • 传名参数
def travel(times:()=>Int) =if(times() > 0)print("可以穿越")
travel(()=>1)

组合和继承

  • 抽象类
abstract class Weapon {def skills: Array[String]val count = skills.length
}
  • 扩展类
# 定义
class Sword(s: Array[String]) extends Weapon {def skills: Array[String] = s
}
# 调用
val s = new Sword(Array("宿蛾之月","旋风阵"))
s.skills
s.count
  • 参数化成员变量
# 定义
class Sword(val skills: Array[String]) extends Weapon {}
# 调用
val s = new Sword(Array("红龙破"))
s.skills
s.count
  • 修饰参数化成员变量
# 定义
class Pearl {val color = "colorless"
}
class RedPearl (override val color: String,private val master: String
) extends Pearl
val rp = new RedPearl("red","诸叶")
# 调用
rp.color
rp.master // 不能访问
  • 多态和动态绑定
# 定义
abstract class Weapon {def create() {println("制造武器")}
}
class Sword extends Weapon {override def create() {println("制造刀")}
}
class Spear extends Weapon
# 调用
val s = new Sword
s.create
val s = new Spear
s.create
  • final 修饰类成员
abstract class Weapon {final def create() {println("制造武器")}
}
  • final 修饰类
final abstract class Weapon {def create() {println("制造武器")}
}

Trait

  • 定义 trait
trait attack {def skill() {println("技能")}
}
  • 类混合 trait
# 定义
trait attack {def skill() {println("苍龙破")}
}
class Weapon {}
class Sword extends Weapon with attack{override def toString = "菊十文字"
}
# 调用
val s = new Sword
s.skill

  • package
package backpack {package study {class Student {var hb = new HistoryBook}class HistoryBook}class Bicycle {val s = new study.Student}class Classmates {class Classmate {def addBicycle() {new Bicycle}}}
}
  • import
package backpack
abstract class Pearl(val name: String,val color:String
)
object Pearls{object RedPearl extends Pearl("RedPearl","red")object SliverPearl extends Pearl("SliverPearl","sliver")object GoldPearl extends Pearl("GoldPearl","gold")val all = List(RedPearl,SliverPearl,GoldPearl)
}
// 导入Pearl对象
import backpack.Pear
// 导入backpack的所有成员
import backpack._
// 导入backpack中Pearl对象的所有成员
import backpack.Pearl._
// 隐藏Pearl对象中的GoldPearl
import backpack.Pearl.{GoldPearl}
// 重命名对象
import backpack.Pearl.{GoldPearl => YellowPearl}
// 重命名包
import backpack.{Pearl => P}

访问修饰符

  • private
class Modern {class Home {private def travel(){println("穿越")}class Tree {travel() // 可以访问}}(new Home).travel() // 不能访问
}
  • protected
class Ancient{class Tree {protected def travel() {println("穿越")}}class Well extends Tree{travel() // 可以访问}class Foreast{(new Tree).travel() // 不能访问}
}

http://www.taodudu.cc/news/show-5925195.html

相关文章:

  • Vue3+TypeScript从入门到精通系列之:泛型接口
  • 关公战秦琼手游java,黑崎一护VS犬夜叉谁更强?关公战秦琼的戏码要在这款手游中上演...
  • 可视化案例(六)犬夜叉各大CP动态热度排序图
  • 《犬夜叉》台词分享
  • 犬夜叉觉醒怎么在电脑上玩 犬夜叉觉醒电脑版玩法教程
  • 犬夜叉
  • android 声波曲线动画,(自定义view实现)音量波形图
  • 如何调整Android手机的开机音量大小
  • 音量调整工具有哪些?我推荐下面几款音量调整软件给你
  • python爬虫网站 词云_Python爬虫之爬取情话网站并绘制词云
  • AI 帮你说,基于 AI 文本生成的能力,生成祝福、对话、情话
  • 扫雷游戏编程
  • HDU 5965 扫雷 递推
  • 探秘C语言扫雷游戏实现技巧
  • puzzle(1011)《平面逆推》扫雷
  • 白话微服务60秒:吴站长汉奸名册就是注册与发现!
  • python清华源 断流_ADSL断流/断线问题经典分析
  • 用 IDA Pro 破解【iPhone IPA 防破解版】教程
  • iphone开发软件Xcode3.2.6破解免证书真机开发调试方案
  • 踩过的坑—iphone手机H5样式兼容总结
  • iPhone开发证书破解
  • 1秒破解iPhone 13 Pro:可任意获取并删除设备上的数据
  • Xcode证书破解 iphone真机部署
  • Linux 知识点归纳(一) 进程概念 以及 查看进程的方法
  • stm32H747 开发板-m7 threadX初探
  • 面试的这些禁忌,你踩中了么?
  • docker容器化 没用
  • 这个让我情何以堪!也许我多虑了
  • Android:时间轴动态记录安排事情,24小时制,按照时间先后排序
  • c#使用Nplot插件开发之使用线图与时间轴

杂项 《Scala 开发教程》实验报告相关推荐

  1. html表单实验结论,web前端开发技术实验报告-实验五

    1.长 春 大 学 20 15 2016学年第 二 学期Web前端开发技术 课程实 验 报 告学 院: 计算机科学技术专 业: 软件工程 班 级: 软件14402 学 号: 姓 名: 王 悦 任课教师 ...

  2. 汇编语言简明教程 实验报告

    汇编语言简明教程 实验报告 提示:本文是应燕山大学实验要求,经抓耳挠腮大量掉发查阅资料后所得 文章目录 汇编语言简明教程 实验报告 前言 实验一 汇编语言源程序的输入 1.1实验内容 1.2实验过程 ...

  3. OUC_2022年夏季《移动软件开发》实验报告-实验2

    2022年夏季<移动软件开发>实验报告 实验名称: 实验 2 :天气查询小程序 博客地址: https://blog.csdn.net/Postlude Github仓库地址: https ...

  4. 数据库应用开发技术实验报告

    "数据库应用开发技术"实验报告 2020-2021学年 第二学期 实验名称: 学生姓名: 学 号: 专业班级: 所在学院: 指导教师: 职 称: 完成日期: 实验1 sql ser ...

  5. 实训报告html前端开发,web前端开发技术实验报告 实验三.doc

    web前端开发技术实验报告 实验三.doc (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分  长 春 大 学 20 15 - 20 ...

  6. linux教程 实验报告,linux大学教程实验报告范文6

    linux大学教程实验报告范文6 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 Linux操作系统第六次实验1.执行以下命令,考虑 ...

  7. 跨平台脚本开发技术实验报告 github cache

    2021-2022学年第2学期 实 验 报 告 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tKYnUdkJ-1665463185652)(zucc.png &quo ...

  8. 《移动应用开发》实验报告——轮播图

    代码仓库:https://gitee.com/shentuzhigang/demo-project/tree/master/vue-photos Blog:https://shentuzhigang. ...

  9. java程序设计教程实验报告_java程序设计课程--实验报告-实验13.doc

    java程序设计课程--实验报告-实验13.doc 还剩 12页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: ...

最新文章

  1. python读取某一行-python计算文件的行数和读取某一行内容的实现方法
  2. 51nod 1448 二染色问题 (逆向考虑)
  3. xpath修复html错误,【python】xpath解析html文件报错:lxml.etree.XPathEvalError: Invalid expression...
  4. 收藏:如何实现路由器的本地验证和授权
  5. android 涂鸦之图片叠加,android图像处理系列之七--图片涂鸦,水印-图片叠加...
  6. 《非常网管:网络管理从入门到精通(修订版)》一1.4 TCP/IP
  7. 深度解析javascipt2
  8. turbo c mysql_Turbo C 2.0集成开发环境的使用
  9. STM32-雨滴传感器
  10. 黑盒测试和白盒测试详解
  11. 三维实景建模技术在智慧交通领域的新发展与深入应用
  12. 浏览器安全检查5秒解决方案
  13. maven项目中JRE System Library Problem J2SE-1.5问题
  14. 音乐、音效素材库,好听的BGM都在这~
  15. AIOT-物模型(产品模型、数据模板)
  16. ESP32 下载与烧录最新固件
  17. 通过C#和Arduino实现软件示波器
  18. java中的三种IO(BIO、NIO、AIO)
  19. 腾讯云服务器IP地址打不开网站注意80端口的问题
  20. 不懂TDK优化?一文教你学会如何做TDK优化

热门文章

  1. 【Error】 NotImplementedError raise NotImplementedError
  2. 软件测试工程师前景如何?主要做些什么工作?
  3. SQLServer中的CTE(Common Table Expression)通用表表达式使用详解
  4. 帮我写一个基于51单片机的智能刹车系统
  5. ubuntu 远程桌面登录
  6. 我和我的大伙伴们的恒波生活
  7. Kafka性能优化及性能测试
  8. 经典算法题:丢棋子问题或者丢玻璃球问题
  9. java sha256 64位,JAVA SHA256加密
  10. 用 JavaScript 实现手势库 — 支持多键触发【前端组件化】