Scala的Option类型 为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯,Scala鼓励你在变量和函数返回值可能不会引用任何值的时候使用Option类型.在没有值的时候,使用None,这是Option的一个子类.如果有值可以引用,就使用Some来包含这个值.Some也是Option的子类.None被声明为一个对象,而不是一个类,因为我们只需要它的一个实例.这样,它多少有点像null关键字,但它却是一个实实在在的,有方法的对象. 单独对一个map对象使用get方法,获取到的是…
转载:http://www.jianshu.com/p/95896d06a94d 1.option类型避免对象是空值,造成空指针异常. 2.None对象表示null,在没有对象返回时使用,some在有对象值时使用. 避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null.在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的.但是这对语言设计者来说是一件令人疑惑的选择.为什么要在程序员希望返回一个对象的时候返回…
当一个函数既要返回对象,又要返回null的时候,使用Option[] http://www.runoob.com/scala/scala-options.html Option是scala的选项,用来表示一个键是可选的(有值或者无值),比如判断一个map是否有值,可以直接使用get(xxx) ,返回的就是Option[String] Option[]有两个衍生值,一个是Some[],一个是None final case class Some[+A](x: A) extends Option[A]…
一般来说,对于每种语言都会有一个关键字来表示一个对象引用的“无”.在Java中使用的是null. 而Scala则融合了函数式编程的风格,当预计到变量或者函数返回值可能不会引用任何值的时候,使用Option类型. Option(选项)类型用来表示一个值.(有值或无值). Option[T] 是一个类型为 T 的一个可选值的容器. Option类包含一个子类Some,当存在可以被引用的值的时候,也就是有值,就可以使用Some来包含这个值.例如Some("Hadoop") Option类还包…
Option的解释: Represents optional values. Instances of Option are either an instance of scala.Some or the object None. Option[A] (sealed trait) 有两个取值:     1. Some[A] 有类型A的值     2. None 没有值 Option一般有两种用法:     1. 模式匹配 Option[A] option option match { case…
Option类型本身没有实现,而是依赖两个子类型提供具体实习那:Some和None.Some是iyge类型参数化的单元素集合,None是一个空集合. ----<scala学习手册>P119…
欢迎关注我的新博客地址:http://cuipengfei.me/blog/2014/08/30/options-for/ Scala里的forkeyword是个非常有趣的东西. 能够用来把多层嵌套for循环写成一层.比方这样: 1 for(i<-1 to 10;j<-1 to 10;k<-1 to 10) yield(s"$i $j $k") 这行代码运行的结果是这种: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19…
1.hello world程序 object HelloWorld { def main(args: Array[String]) { println("Hello,World!") } } 注意 语句末尾的分号通常是可选的. 语句末尾的分号通常是可选的. 分号是表达式分隔符,它们是推断的. Scala将行的结尾视为表达式的结尾,除非它可以推断表达式继续到下一行. Scala程序处理从主方法开始,这是每个Scala程序的一个强制性部分. 主要方法未标记为静态. 主要方法是对自动实例化的…
今天在工作中遇到的几个小问题,总结一下: 1.因为业务需要调用PHP的接口,获取到的返回体需要做一段逻辑处理,然而某个字段接收到的参数是io.serializable类型,字段的类型不是预期的string类型,当时有点懵逼,因为是用Scala的match case做模式匹配,也没多想,幸亏同事提示一番,才想起String其实实现了serializable接口,所以尽管返回的是io.serializable类型,但是也可以用string来接收: 2.调用PHP接口,返回体用JsonObject接受…
转载自Jason DingGitCafe博客主页(http://jasonding1354.gitcafe.io/)Github博客主页(http://jasonding1354.github.io/)CSDN博客(http://blog.csdn.net/jasonding1354)简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles) 避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,…
避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是"无",在Java,它是null.在Java 里,null 是一个关键字,不是一个对象,所以对它调用不论什么方法都是非法的. 可是这对语言设计者来说是一件令人疑惑的选择. 为什么要在程序猿希望返回一个对象的时候返回一个关键字呢? Scala的Option类型 为了让全部东西都是对象的目标更加一致,也为了遵循函数式编程的习惯.Scala鼓舞你在变量和函数返回值可能不会引用不论什么值的时候使用Option类型.…
Scala Option Scala Option类型用来表示一个值是可选的(有值或无值) Option[T] 是一个类型为 T 的可选值的容器: 如果值存在, Option[T] 就是一个 Some[T] 如果不存在, Option[T] 就是对象 None Option.orNull 参数:没有(当属性用) 返回:如果Option不为None返回Some的值否则返回null 例一:返回Some的值 scala> val v = Some("Hello Option") v:…
转载自: Scala 初学者指南, 这里有一系列很棒的文章 类型 Option 可能你已经见过它在 Map API 中的使用:在实现自己的提取器时,我们也用过它, 然而,它还需要更多的解释. 你可能会想知道它到底解决什么问题,为什么用它来处理缺失值要比其他方法好, 而且可能你还不知道该怎么在你的代码中使用它. 这一章的目的就是消除这些问号,并教授你作为一个新手所应该了解的 Option 知识. Scala 语言中包含一个标准类型 Option[A] 类型, Option[A] 是一个类型为 A…
Alternatives Use null as a last resort. As already mentioned, Option replaces most usages of null. If you using null to implement deferred initialisation of a field with some expensive calculation, you should use a lazy val. Canonical initialisation…
看到Option类型就知道这本教材应该要说那个了. 使用过guava后,应该知道guava中的Optional类的作用是什么.算了找下原始文档好了: Optional<T> is a way of replacing a nullable T reference with a non-null value. An Optional may either contain a non-null T reference (in which case we say the reference is &…
避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null.在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的.但是这对语言设计者来说是一件令人疑惑的选择.为什么要在程序员希望返回一个对象的时候返回一个关键字呢? Scala的Option类型 为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯,Scala鼓励你在变量和函数返回值可能不会引用任何值的时候使用Option类型.在没有值的时候,使用No…
在 Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的. Scala 的 Option类型 Scala在变量和函数返回值可能不会引用任何值的时候使用 Option 类型.在没有值的时候,使用 None,这是 Option 的一个子类.如果有值可以引用,就使用 Some 来包含这个值.Some 也是 Option 的子类. None 被声明为一个对象,而不是一个类,因为我们只需要它的一个实例.这样,它多少有点像 null 关键字,但它却是一个实实在在的,有方法的对象…
样本类:添加了case的类便是样本类.这种修饰符可以让Scala编译器自动为这个类添加一些语法上的便捷设定. //样本类case class //层级包括一个抽象基类Expr和四个子类,每个代表一种表达式 //样本类自动添加与类名一致的工厂方法 abstract class Expr case class Var(name:String) extends Expr//括号内参数不用加val,默认为加val的字段 case class Number(num:Double) extends Expr…
Scala中Option是用来表示一个可选类型 什么是可选? --> 主要是指 有值(Some) 和 无值(None)-->Some和None是Option的子类 val myMap:Map[String,String] = Map("key1"->"value1") //获取集合value的值 val maybeString1: Option[String] = myMap.get("key1") val maybeStrin…
前言 Scala是以JVM为运行环境的面向对象的函数式编程语言,它可以直接访问Java类库并且与Java框架进行交互操作.正如之前所介绍,Spark是用Scala语言编写的,Kafka server端也是,那么深入学习Scala对掌握Spark.Kafka是必备掌握技能. 本篇文章主要介绍,在学习.编写Spark程序时,至少要掌握的Scala语法,多以示例说明.建议在用Scala编写相关功能实现时,边学习.边应用.边摸索以加深对Scala的理解和应用. 1. 变量.表达式.循环.Option.方…
目录[-] 1.   Scala有多cool 1.1.     速度! 1.2.     易用的数据结构 1.3.     OOP+FP 1.4.     动态+静态 1.5.     DSL 1.6.     够复杂 1.7.     够有趣 1.8.     开发社区 2.   lang 2.1.     和Java的异同 2.1.1.  语法 2.1.2.  库 2.2.     变量 2.2.1.  保留字 2.2.2.  变量标识 2.2.3.  变量定义 2.2.3.1     va…
Scala的有即Any,Scala的无是Null,null,Nil,Nothing,None,Unit.那么这几种空有什么区别呢? 一.Null&null 很多人一辈子都没有走出这个无.Null是一个Trait,你不能创建她它的实例.但是Scala在语言层面上存在一个Null的实例,那就是null.Java中的null意味着引用并没有指向任何对象.但存在一个悖论,一切都是对象,那没有对象是不是也是对象呢?Scala定义了一个类似于对象语义的Null,和一个值语义的null.这样面向对象在空引用的…
Scala的Option[T]是容器对于给定的类型的零个或一个元件.Option[T]可完美替代Java中的null,可以是Some[T]或者None. 例如,Scala Map的get方法输出即为Option[T]. def main(args: Array[String]): Unit = { val capitals = Map("France" -> "Paris", "China" -> "Beijing"…
Recently I transit to use scala to program. scala is a functional and objected oriented language, but it has seamless java Interoperability (they both run in JVM and freely mixed). Compared to the java that I am familiar to,  there are some common co…
尽管Scala还有一些基于语言特性的设计模式,单本文还是着重于介绍大家所周知的经典设计模式,因为这些设计模式被认为是开发者之间交流的工具. 创建型设计模式 1.工厂方法模式 2.延迟加载模式 3.单例模式 结构型模式 1.适配器模式 2.装饰模式 行为型 1.值对象模式 2.空值模式 3.策略模式 4.命令模式 5.责任链模式 6.依赖注入模式 一.工厂方法模式 工厂方法模式将对实际类的初始化封装在一个方法中,让子类来决定初始化哪个类. 工厂方法允许: 1.组合复杂的对象创建代码 2.选择需要初…
Scala数组小结 1.定长数组 定长数组:指长度不可变的数组Array.第一种方式:先声明一个数组,后初始化该数组: scala> val array = new Array[Double](5) array: Array[Double] = Array(0.0, 0.0, 0.0, 0.0, 0.0) 赋值方式:array(index) = value第二种方式: scala> val array = Array(1, 2, 3, 4, 5) array: Array[Int] = Arr…
一. 类.对象.继承.特质 1.类 Scala的类与Java.C++的类比起来更简洁 定义: package com.jiangbei //在Scala中,类并不用声明为public. //Scala源文件中可以包含多个类,所有这些类都具有公有可见性. class Person { // 定义一个不可变的val(只有getter)和可变的var(getter setter都有) // 更直观的理解,可以通过反编译工具打开out目录的.class文件 val id = 9527 var name…
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 3 1.5 Windows下搭建Scala开发环境 4 1.6 Linux下搭建Scala开发环境 5 1.7 Scala开发工具的介绍 8 1.7.1 idea工具的介绍 8 1.7.2 Scala插件安装 8 1.8 scala的开发的快速入门 10 1.8.1 IDE工具Idea 来开发 “…
看到这里有几个有意思的 规则,转载于此: Read Eval Print Loop (REPL) REPL在Scala里面指的是直接运行scala.exe进入的交互式命令行模式.广义上讲,也泛指那些在线编程工具. 核心规则1:请使用REPL来熟悉Scala语言. Scala的REPL有个好处是能够将我们输入的每行代码的内部表示反馈出来.比如: scala> def add(a:Int, b:Int):Int = a + b add: (a: Int, b: Int)Int 我们定义一个函数,完成…
Clojure首先是FP, 但是由于基于JVM, 所以不得已需要做出一些妥协, 包含一些OO的编程方式 Scala首先是OO, Java语法过于冗余, 一种比较平庸的语言, Scala首先做的是简化, 以更为简洁的方式来编写OO, 主要利用'type inference'能推断出来的, 你就不用写, 但如果仅仅这样, 不如用python 所以Scala象其名字一样, "可伸展的语言", 它是个大的集市, 它积极吸纳其他语言的优秀的特征, 最重要的就是FP, 你可以使用Scala来写OO…