def getOrElse[B1 >: B](key: A, default: => B1): B1 = get(key) match {
case Some(v) => v
case None => default
从API中可以看出,传入的参数是(key,default)这种形式,返回值是:如果有key那就get(key),如果没有,就返回default,再看看get()方法:
def get(key: A): Option[B]
传入一个key,得到这个key的映射。注意:如果单独调用get()方法,这里返回的是一个Option,如果要返回值需要继续get:get().get
看一个简单的例子:
object Test5 {
def main(args: Array[String]): Unit = {
var map=Map[Int,String]()
map+=(1->"one",2->"two")
println(map.getOrElse(1,"default"))
println(map.getOrElse(2,"default"))
println(map.getOrElse(3,"default"))
得到的结果:
default
很显然,当你想获得1,2的value的时候,map中是有值的,是可以获得的,而当你想获得3的值,map中并不存在,只能获得默认值。你想getOrElse的值必然是一个键值对的形式。
getOrElse()主要就是防范措施,如果有值,那就可以得到这个值,如果没有就会得到一个默认值,个人认为早开发过程中用getOrElse()方法要比用get()方法安全得多。def getOrElse[B1 >: B](key: A, default: => B1): B1 = get(key) match { case Some(v) => v case No...
库和CLI来获取和运行Ammonite脚本
libraryDependencies + = " io.github.alexarchambault.ammonite " %% " ammonite-runner " % " 0.2.0 "
最新版本是 。
import ammrunner . _
val file : java.io. File = ???
val versions = VersionsOption .fromScript(file)
// Latest matching scala / Ammonite versions if none are set in script
.getOrElse( Versions .default())
val command = AmmoniteFetcher (versions)
.comman
scala eclipse插件.对应scala版本:2.10--2.11,对应eclipes版本:4.4--4.5.
update site:http://download.scala-ide.org/sdk/lithium/e44/scala211/stable/site
下载地址:http://scala-ide.org/download/current.html
赠送jar包:scala-compiler-2.11.0.jar;
赠送原API文档:scala-compiler-2.11.0-javadoc.jar;
赠送源代码:scala-compiler-2.11.0-sources.jar;
赠送Maven依赖信息文件:scala-compiler-2.11.0.pom;
包含翻译后的API文档:scala-compiler-2.11.0-javadoc-API文档-中文(简体)-英语-对照版.zip;
Maven坐标:org.scala-lang:scala-compiler:2.11.0;
标签:scala、lang、compiler、jar包、java、API文档、中英对照版;
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。
人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
双语对照,边学技术、边学英语。
又是一个非常容易忽略却又值得思考的问题, 准确来说是里面进行了一层key的判断,当里面存在key、default等值时,由default.getOrElse(key,value),如果key在前面的里面能够匹配到, 那么即返回前面的对应值,如若匹配不到,即返回后面的“value”值。
而更加值得注意的是,如果前面是None的话后面,直接得到getOrElse的值,如果是Some的话 即获取Some括号中的值。
object Scala01 {
def main(args: Array[String]): Unit = {
val map: Map[String, String] = Map("aa"->"AA","bb"->"BB","cc"->"CC")
val map01: Option
Scala HashMap getOrElse 与 getOrElseUpdate
使用Map的过程中,发现有和 getOrElse 相似的方法 getOrElseUpdate ,大概看下具体是在做什么~
getOrElse
getOrElse经常用到,当 HashMap 获取某个不存在的key时会返回一个default默认值,从而避免出现 null point 的情况
/** Returns the value from this `Success` or the given `default` ar
方法方法定义定义
方法返回值类型推断
方法参数默认参数带名参数变长参数
方法调用方式操作符即
方法花括号调用法无括号调用法
方法定义
一个类可以有自己的
方法,
scala中的
方法和Java
方法类似。但
scala与Java定义
方法的语法是不一样的。
定义
方法
def methodName (参数名:参数类型, 参数名:参数类型) : [return type] = {
//
方法体:一系列的代码
参数列表的参数类型不能省略
返回值类型可以省略,由
scala编译器自动推断
返回值可以不写return,默认就是{}块表达式的值
定义一个
方法,实现两个整形数值相加,返回相加后的结果
Scala Maven 插件
scala-maven-plugin (以前是 maven-scala-plugin)用于在 Maven 中编译/测试/运行/记录 Scala 代码。
目前,您需要 Maven 3.x 和 JDK 8 来构建插件、创建站点并运行integration-test 。
./mvnw package :生成jar
./mvnw site : 生成插件网站
./mvnw integration-test : ./mvnw package + 运行所有集成测试
注意:要运行test_scalaHome :您必须在src/it/test_scalaHome/pom.xml设置scala.home属性以对应于您的环境。 有关简单设置,请参阅上面的构建部分。
./mvnw integration-test -Dinvoker.test=test
赠送jar包:scala-parser-combinators_2.11-1.0.4.jar;
赠送原API文档:scala-parser-combinators_2.11-1.0.4-javadoc.jar;
赠送源代码:scala-parser-combinators_2.11-1.0.4-sources.jar;
赠送Maven依赖信息文件:scala-parser-combinators_2.11-1.0.4.pom;
包含翻译后的API文档:scala-parser-combinators_2.11-1.0.4-javadoc-API文档-中文(简体)版.zip;
Maven坐标:org.scala-lang.modules:scala-parser-combinators_2.11:1.0.4;
标签:11、parser、scala、combinators_2、lang、modules、jar包、java、API文档、中文版;
使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。
人性化翻译,文档中的代码和结构保持不变,注释和说明精
getOrE
lse()的字面意思,应该是,当某一个Option类型的调用此
方法,如果此Option有值,则返回的是就是此值,如果Option类型发变量为None,则返回getOrE
lse(形参a) 中形参a的值。
参照代码理解:
scala> val a = Some(true)
a: Some[Boolean] = Some(true)
scala> a.getOrE
lse(fa
lse)
res3: Boolean = true
scala> a.getOrE
lse(true)
def getOrElse[B1 >: B](key : A, default : => B1) : B1 = { /* compiled code */ }
如果有值,那就可以得到这个值,如果没有就会返回一个默认值
val content = fieldMap.getOrElse...
今天做项目的时候被scala的getOrElse的返回类型坑了很久,特地记录如下:对于scala的getOrElse这个方法,其函数签名如下final def getOrElse[B >: A](default: ⇒ B): B
* Returns the option's value if the option is nonempty, otherwise return the resul