Scala Package Package Objects
2019独角兽企业重金招聘Python工程师标准>>>
Scala Package && Package Objects
Scala package
scala package 和 java package作用是一样的,但scala package 又有些不同,如下示例,
package com.usoftclass Person (val firstName: String,val lastName: String,val age: Int,val occupation: String) {def fullName: String = firstName + " " + lastNamedef greet (formal: Boolean): String = {if (formal)"Hello, my name is " + fullName + ". I'm a " + occupation + "."else"Hi, I'm " + firstName + "!"}}
限定Person 类在 com/usoft 目录下。scalac 编译后会生成相应的目录。
也可以这样做,把class的定义放在package scope下,如下,
package com.usoft1{class Person (val firstName: String,val lastName: String,val age: Int,val occupation: String) {def fullName: String = firstName + " " + lastNamedef greet (formal: Boolean): String = {if (formal)"Hello, my name is " + fullName + ". I'm a " + occupation + "."else"Hi, I'm " + firstName + "!"}}
}
如下编译可以通过,Person.scala是文件名
E:\test-scala>scalac Person.scala
会生成相应的目录 com/usoft1
package的定义也可以连着写,如下,
package com.usoft
package example
package scala
class Person
其实上面的package定义就等于下面的写法,
package com.usoft.example.scala
class Person
还可以这样在同一个文件里定义两个包名,如下,
package com.usoft1{class Person (val firstName: String,val lastName: String,val age: Int,val occupation: String) {def fullName: String = firstName + " " + lastNamedef greet (formal: Boolean): String = {if (formal)"Hello, my name is " + fullName + ". I'm a " + occupation + "."else"Hi, I'm " + firstName + "!"}}
}package com.usoft2{class Student{}
}
同时也会生成相应的目录,com/usoft2
package的定义也可以嵌套,如下,
package com{package usoft{package example{class Person{}}}
}
相应的会生成com/usoft/example目录
详细:http://www.artima.com/scalazine/articles/chained_package_clauses_in_scala.html
http://www.drmaciver.com/2009/07/how-packages-work-in-scala/
package object应用示例
下面写一个package object应用的例子,
package gardening{package fruits{class Fruit(val name: String, val color: String)object apple extends Fruit("Apple", "green")object plum extends Fruit("Plum", "blue")object banana extends Fruit("Banana", "yellow") package object fruits {val planted = List(apple, plum, banana) def showFruit(fruit: Fruit) {println(fruit.name +"s are "+ fruit.color)}}}
}// in file PrintPlanted.scala
object PrintPlanted {def main(args: Array[String]) {import gardening.fruits._for (fruit: Fruit <- fruits.planted) {showFruit(fruit)}}
}
编译运行,
E:\test-scala\package-object>scalac PrintPlanted.scalaE:\test-scala\package-object>scala PrintPlanted
Apples are green
Plums are blue
Bananas are yellowE:\test-scala\package-object>
======================================END=====================================
转载于:https://my.oschina.net/xinxingegeya/blog/371082
Scala Package Package Objects相关推荐
- VScode-Go can't load package: package .: no buildable Go source files in
在VScode中调试Go程序时提示: can't load package: package .: no buildable Go source files in d:\my_workspace\go ...
- Scala的package用法
- oracle 自动导出package/package body/procedure 等为sql文件并且自动上传到ftp服务器上
有的时候对于研发或者其他非DBA的人员来说是没有权限登陆到数据库上的,但有的时候研发需要调试一些存储过程或者包等,又常常需要登陆到服务器上去查看,那么再这种情况下,可以通过dba_source或者al ...
- Mac 运行goland出现can‘t load package: package xxxx is not in GOROOT问题排查
在通过goland初次进行代码编译后出现如下问题: 在这里进行下问题排查 1 首先执行 go env 查看项目所在位置是否为GOPATH下/src(项目默认地址) 2,确认无误后判断项目go mod是 ...
- combin14_使用SwiftUI,Combin和Swift Package Manager(SPM)构建复杂的模块化架构
combin14 We should imagine a modular architecture like a modular building. We need to put pre-design ...
- Go 分布式学习利器(16) -- go中可复用的package构建
通过本文,你将了解go 语言中如何将自己的package构建到项目中 以及如何将远程(github)的package构建到项目中. 1. 构建本地的package package 是可复用模块的基本单 ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...
本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 (三)SSIS的简介 (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介 ...
- Swift Package Manager 库制作
Swift Package Manager 是苹果官方推出的库管理工具.类似 cocoapods. 准备事项: 一个需要封装的库 存放库的远程仓库,如 github.gitee.gitLab等 创建P ...
- 对于python来说、一个模块就是一个文件-彻底明白Python package和模块
python 是通过module组织代码的,每一个module就是一个python文件,但是modules是通过package来组织的. 如果我们自己写着玩,有的时候就是一两个Python文件在同级目 ...
最新文章
- springboot使用logback日志,部署到tomcat不生效问题解决
- 每天一个linux命令(27):linux chmod命令
- mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)
- luks:Linux Unified Key Setup 持久加密USB
- Go语言编程—Go语言实现文件拷贝
- 为什么你从来没做过发起人?
- StakeDAO新增Sushiswap流动性奖励计划
- DHTML中window的使用
- 如何在 iPhone、iPad、Apple Watch、Mac 和 Apple TV 上使用 AirPods 收听?
- 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课(炫酷版一)...
- JSFinder自动化脚本一键批量处理URL(附自动执行脚本带whatweb筛选)
- 用USBOOT软件修复U盘
- 新司机的黑裙战斗机 篇三:群晖【番外篇】群晖系统崩溃后的数据抢救
- rpa操作excel_一文看懂RPA与Excel宏的区别
- 向量微积分——理解梯度
- c语言程序设计精髓第五章编程题
- Oracle 12c升级指南
- win11在计算机管理中添加用户发现没有本地用户和组,命令方式添加用户以及查看用户
- 毕设:基于CNN卷积神经网络的猫狗识别、狗品种识别(Tensorflow、Keras、Kaggle竞赛)
- R语言画图时常见问题
热门文章
- 开发测试矛盾java吧_不愿看到Java开发者再做的10件事
- 计算机网络的功能分布计算,网络中心的分布计算(转帖)
- sublime多行变一行及sublime一键格式化html/css/js、光标快捷键移动行首行尾、删除空行
- 两个按钮间设置空格(间距)
- layui引入jQuery
- es的doc_value对排序字段的作用
- PWM级联方案。UART接口的单总线控制多个PWM输出。数字舵机,舵机级联方案
- vb用数组方式快速导出MSFlexGrid表格数据到Excel表格中
- 【引用】窗口处理技巧大全 vb(窗体控件)
- Visual Basic里与Print有关的函数