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相关推荐

  1. 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 ...

  2. Scala的package用法

  3. oracle 自动导出package/package body/procedure 等为sql文件并且自动上传到ftp服务器上

    有的时候对于研发或者其他非DBA的人员来说是没有权限登陆到数据库上的,但有的时候研发需要调试一些存储过程或者包等,又常常需要登陆到服务器上去查看,那么再这种情况下,可以通过dba_source或者al ...

  4. Mac 运行goland出现can‘t load package: package xxxx is not in GOROOT问题排查

    在通过goland初次进行代码编译后出现如下问题: 在这里进行下问题排查 1 首先执行 go env 查看项目所在位置是否为GOPATH下/src(项目默认地址) 2,确认无误后判断项目go mod是 ...

  5. combin14_使用SwiftUI,Combin和Swift Package Manager(SPM)构建复杂的模块化架构

    combin14 We should imagine a modular architecture like a modular building. We need to put pre-design ...

  6. Go 分布式学习利器(16) -- go中可复用的package构建

    通过本文,你将了解go 语言中如何将自己的package构建到项目中 以及如何将远程(github)的package构建到项目中. 1. 构建本地的package package 是可复用模块的基本单 ...

  7. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...

     本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较    (三)SSIS的简介    (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介 ...

  8. Swift Package Manager 库制作

    Swift Package Manager 是苹果官方推出的库管理工具.类似 cocoapods. 准备事项: 一个需要封装的库 存放库的远程仓库,如 github.gitee.gitLab等 创建P ...

  9. 对于python来说、一个模块就是一个文件-彻底明白Python package和模块

    python 是通过module组织代码的,每一个module就是一个python文件,但是modules是通过package来组织的. 如果我们自己写着玩,有的时候就是一两个Python文件在同级目 ...

最新文章

  1. springboot使用logback日志,部署到tomcat不生效问题解决
  2. 每天一个linux命令(27):linux chmod命令
  3. mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)
  4. luks:Linux Unified Key Setup 持久加密USB
  5. Go语言编程—Go语言实现文件拷贝
  6. 为什么你从来没做过发起人?
  7. StakeDAO新增Sushiswap流动性奖励计划
  8. DHTML中window的使用
  9. 如何在 iPhone、iPad、Apple Watch、Mac 和 Apple TV 上使用 AirPods 收听?
  10. 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课(炫酷版一)...
  11. JSFinder自动化脚本一键批量处理URL(附自动执行脚本带whatweb筛选)
  12. 用USBOOT软件修复U盘
  13. 新司机的黑裙战斗机 篇三:群晖【番外篇】群晖系统崩溃后的数据抢救
  14. rpa操作excel_一文看懂RPA与Excel宏的区别
  15. 向量微积分——理解梯度
  16. c语言程序设计精髓第五章编程题
  17. Oracle 12c升级指南
  18. win11在计算机管理中添加用户发现没有本地用户和组,命令方式添加用户以及查看用户
  19. 毕设:基于CNN卷积神经网络的猫狗识别、狗品种识别(Tensorflow、Keras、Kaggle竞赛)
  20. R语言画图时常见问题

热门文章

  1. 开发测试矛盾java吧_不愿看到Java开发者再做的10件事
  2. 计算机网络的功能分布计算,网络中心的分布计算(转帖)
  3. sublime多行变一行及sublime一键格式化html/css/js、光标快捷键移动行首行尾、删除空行
  4. 两个按钮间设置空格(间距)
  5. layui引入jQuery
  6. es的doc_value对排序字段的作用
  7. PWM级联方案。UART接口的单总线控制多个PWM输出。数字舵机,舵机级联方案
  8. vb用数组方式快速导出MSFlexGrid表格数据到Excel表格中
  9. 【引用】窗口处理技巧大全 vb(窗体控件)
  10. Visual Basic里与Print有关的函数