scala细节】的更多相关文章

在高版本中,scala使用了自己的String,而不是java.lang.String 字符串转数字:"33.4".toDouble    "33.4".toFloat   "33".toInt 调用字符串的拓展方法,会转变为StringOps类,如取交集"ab".intersect("bc") 调用数字的拓展方法,会转变成Rich类 BigInt.BigDecimal能直接用符号做运算 没有++.-- 函…
在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都是一样的,只是需要注意一些细节的地方就可以了.下面就来简单说明一下.在这里关于scala和jdk的配置问题就不再详述了,下面进入正题吧. 首先放上调试用的scala代码hello.scala object hello { def main(args: Array[String]): Unit = {…
在上期讨论中我们介绍了Scala Macros,它可以说是工具库编程人员不可或缺的编程手段,可以实现编译器在编译源代码时对源代码进行的修改.扩展和替换,如此可以对用户屏蔽工具库复杂的内部细节,使他们可以用简单的声明方式,通过编译器自动产生铺垫代码来实现工具库中各种复杂的类型.对象及方法函数的构建.虽然Def Macros可能具备超强的编程功能,但同时使用者也普遍认为它一直存有着一些严重的诟病:包括用法复杂.容易犯错.运算行为难以预测以及没用完善的集成开发环境工具(IDE)支持等.这些恶评主要是因…
我们知道,scala编译器会将scala代码编译成JVM字节码,编译过程中会擦除scala特有的一些类型信息,在scala-2.10以前,只能在scala中利用java的反射机制,但是通过java反射机制得到的是只是擦除后的类型信息,并不包括scala的一些特定类型信息.从scala-2.10起,scala实现了自己的反射机制,我们可以通过scala的反射机制得到scala的类型信息.scala反射包括运行时反射和编译时反射,本文主要阐述运行时反射的一些用法,方便scala开发人员参考,具体原理…
要想搞明白Geotrellis的数据处理情况,首先要弄清楚数据的存放,Geotrellis将数据存放在Accumulo中. Accumulo是一个分布式的Key Value型NOSQL数据库,官网为(https://accumulo.apache.org/),在使用Ambari安装hadoop集群一文中已经介绍了如何安装Hadoop集群以及Accumulo. Accumulo以表来分区存放数据,结构为Key Value,其中Key又包含RowID和Column,Column又包含Family.Q…
本文主要讲解Scala的并发(并行)编程,那么为什么题目概称geotrellis使用(六)呢,主要因为本系列讲解如何使用Geotrellis,具体前几篇博文已经介绍过了.我觉得干任何一件事情基础很重要,就像当年参加高考或者各种考试一样,老师都会强调基础,这是很有道理的.使用Geotrellis框架的基础就是Scala和Spark,所以本篇文章先来介绍一下Scala编程语言,同样要想搞明白Scala并发(并行)编程,Scala基础也很重要,没有Scala语言基础就谈不上Scala并发编程也就更谈不…
2003 年,Herb Sutter 在他的文章 “The Free Lunch Is Over” 中揭露了行业中最不可告人的一个小秘密,他明确论证了处理器在速度上的发展已经走到了尽头,并且将由全新的单芯片上的并行 “内核”(虚拟 CPU)所取代.这一发现对编程社区造成了不小的冲击,因为正确创建线程安全的代码,在理论而非实践中,始终会提高高性能开发人员的身价,而让各公司难以聘用他们.看上去,仅有少数人充分理解了 Java 的线程模型.并发 API 以及 “同步” 的含义,以便能够编写同时提供安全…
Scala开发团队正在将实验版宏指令加入到即将发行的2.10版中.Scala宏指令提供了编译时元编程的高级形式.Scala宏网站描述道: “宏指令显著简化了代码分析和代码生成,这使得它们成为处理大量现实用例的一种可选工具.传统上涉及编写和维护样板的场合可用宏以简单且易维护的方式实现.因此我们认为宏对于Scala编程语言是一项非常有价值的资产.” Scala的宏指令允许开发者创建方法时以语法树转化的形式实现.这些是标准方法的定义,其在编译期间被显式地转换.举一个简单的例子,如assert方法: i…
Effective Scala Marius Eriksen, Twitter Inc.marius@twitter.com (@marius)[translated by hongjiang(@hongjiang)] Table of Contents 序言 格式化: 空格, 命名, Imports, 花括号, 模式匹配, 注释 类型和泛型: 返回类型注解(annotation), 变型, 类型别名, 隐式转换 集合: 层级, 集合的使用, 风格, 性能, Java集合 并发: Future,…
本章的重点在于定义函数式对象,也就是说,没有任何可变状态的对象的类.作为运行的例子,我们将创造若干把分数作为不可变对象建模的类的变体.在这过程中,我们会展示给你Scala面向对象编程的更多方面:类参数和构造函数,方法和操作符,私有成员,子类方法重载,先决条件检查,同类方法重载和自指向. 6.1 类Rational的式样书 一个,或许不怎么重要的,发现是数学上,分数不具有可变的状态.一个分数加到另外一个分数上,产生的结果是一个新的分数.而原来的数不会被“改变”.我们将在本章设计的不可变的Ratio…