到目前位置我们一直在编写单文件代码,只有一个 main.go 文件.本节我们要开始朝完整的项目结构迈进,需要使用 Go 语言的模块管理功能来组织很多的代码文件. 细数 Go 语言的历史发展,模块管理经历了三个重要的阶段.第一阶段是通过全局的 GOPATH 来管理所有的第三方包,第二阶段是通过 Vendor 机制将项目的依赖包局部化,第三阶段是 Go 语言的最新功能 Go Module. 本节我们重点讲解前两个阶段,这两个阶段要求我们编写代码时必须在 GOPATH 下面对应的包路径目录里写.第三个…
trait的abstract override使用: 当我看到abstract override介绍的时候也是一脸懵逼,因为快学scala,只介绍了因为TimestampLogger中调用的super.log依旧是个abstract class,所以必须在方法前加上abstract和override.但是并没有具体介绍如何使用,然后查阅了其他文档,才明白使用方法. 下面的代码定义了超类LoggerEmpty,这个定义意味着该特质只能混入扩展LoggerEmpty的类中. 在特质中声明抽象方法中有…
apply和unapply: apply方法经常用在伴生对象中,用来构造对象而不用显式地使用new. unapply是当做是伴生对象的apply方法的反向操作.apply方法接受构造参数,然后将他们变成对象.而unapply方法接受一个对象,然后从中提取值.unapply方法返回的是一个Option. object ScalaRunner { def main(args: Array[String]): Unit = { testApply2() testApplyUnApply() testC…
抽象类: Scala 抽象类中,抽象方法不需要使用abstract. 在子类中重写超类抽象方法时,不需要使用override. abstract class Person { def say(s: String): Unit } 抽象字段: 使用匿名类型定制抽象字段: 提前定义: class Creature { val range: Int = 10 val env: Array[Int] = new Array[Int] (range) } class Ant extends Creatur…
trait多继承: trait的继承并不像类拥有相同的含义!在下面这个例子中,如果还是运用类的继承的思想,那么运行结果将是什么也没有. trait Logged { def log(msg: String){ } } trait ConsoleLogger extends Logged { override def log(msg: String){ super.log(msg) } } 但是事实并非如此: trait Logged { def log(msg: String){ println…
shell调用:(管道符前加#号,执行shell用!) import sys.process._ "ls -al" #| "grep x" ! 正则表达式:(r表示正则表达式) val numPattern = """[0-9]+""".r for (matchString <- numPattern.findAllIn("99 bottles, 98 bottles")){ pr…
二进制读取文件: val file = new File("F:\\scalaWorkspace\\ScalaLearning\\files\\test.txt") val in = new FileInputStream(file) val bytes = new Array[Byte](file.length().toInt) in.read(bytes) in.close() 写文件: val out = new PrintWriter("F:\\scalaWorksp…
读取行: import scala.io.Source object FileReader { def main(args: Array[String]): Unit = { val source = Source.fromFile("F:\\scalaWorkspace\\ScalaLearning\\files\\test.txt", "UTF-8") val lineIterator = source.getLines() for (line <- li…
刚开始学习Python时,在看文档和别人的blog介绍安装包有的用easy_install, setuptools, 有的使用pip,distribute,那麽这几个工具有什么关系呢,看一下下面这个图就明白了 可以看到distribute是setuptools的取代,pip是easy_install的取代. 关于这些包工具可以参考 http://guide.python-distribute.org/installation.html#installing-pip 下面简单的介绍一下: Dist…
什么是dep? dep和go,在一定程度上相当于maven之于Java,composer之于PHP,dep是go语言官方的一个包管理工具. 相比较go get而言,dep可以直接给引入的第三方包一个专门的目录,并且可以专门制定一个配置文件,控制go项目所引入的包,版本以及其他依赖关系. dep这个项目放在golang官方的github中:https://github.com/golang/dep 官方对于dep的解释是:dep is the official experiment, but no…