杂项 《Scala 开发教程》实验报告
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 开发教程》实验报告相关推荐
- html表单实验结论,web前端开发技术实验报告-实验五
1.长 春 大 学 20 15 2016学年第 二 学期Web前端开发技术 课程实 验 报 告学 院: 计算机科学技术专 业: 软件工程 班 级: 软件14402 学 号: 姓 名: 王 悦 任课教师 ...
- 汇编语言简明教程 实验报告
汇编语言简明教程 实验报告 提示:本文是应燕山大学实验要求,经抓耳挠腮大量掉发查阅资料后所得 文章目录 汇编语言简明教程 实验报告 前言 实验一 汇编语言源程序的输入 1.1实验内容 1.2实验过程 ...
- OUC_2022年夏季《移动软件开发》实验报告-实验2
2022年夏季<移动软件开发>实验报告 实验名称: 实验 2 :天气查询小程序 博客地址: https://blog.csdn.net/Postlude Github仓库地址: https ...
- 数据库应用开发技术实验报告
"数据库应用开发技术"实验报告 2020-2021学年 第二学期 实验名称: 学生姓名: 学 号: 专业班级: 所在学院: 指导教师: 职 称: 完成日期: 实验1 sql ser ...
- 实训报告html前端开发,web前端开发技术实验报告 实验三.doc
web前端开发技术实验报告 实验三.doc (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 长 春 大 学 20 15 - 20 ...
- linux教程 实验报告,linux大学教程实验报告范文6
linux大学教程实验报告范文6 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 Linux操作系统第六次实验1.执行以下命令,考虑 ...
- 跨平台脚本开发技术实验报告 github cache
2021-2022学年第2学期 实 验 报 告 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tKYnUdkJ-1665463185652)(zucc.png &quo ...
- 《移动应用开发》实验报告——轮播图
代码仓库:https://gitee.com/shentuzhigang/demo-project/tree/master/vue-photos Blog:https://shentuzhigang. ...
- java程序设计教程实验报告_java程序设计课程--实验报告-实验13.doc
java程序设计课程--实验报告-实验13.doc 还剩 12页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: ...
最新文章
- python读取某一行-python计算文件的行数和读取某一行内容的实现方法
- 51nod 1448 二染色问题 (逆向考虑)
- xpath修复html错误,【python】xpath解析html文件报错:lxml.etree.XPathEvalError: Invalid expression...
- 收藏:如何实现路由器的本地验证和授权
- android 涂鸦之图片叠加,android图像处理系列之七--图片涂鸦,水印-图片叠加...
- 《非常网管:网络管理从入门到精通(修订版)》一1.4 TCP/IP
- 深度解析javascipt2
- turbo c mysql_Turbo C 2.0集成开发环境的使用
- STM32-雨滴传感器
- 黑盒测试和白盒测试详解
- 三维实景建模技术在智慧交通领域的新发展与深入应用
- 浏览器安全检查5秒解决方案
- maven项目中JRE System Library Problem J2SE-1.5问题
- 音乐、音效素材库,好听的BGM都在这~
- AIOT-物模型(产品模型、数据模板)
- ESP32 下载与烧录最新固件
- 通过C#和Arduino实现软件示波器
- java中的三种IO(BIO、NIO、AIO)
- 腾讯云服务器IP地址打不开网站注意80端口的问题
- 不懂TDK优化?一文教你学会如何做TDK优化