scala中的case语法与java中的switch语法类似,但比switch更强大: 例子一正则匹配: val Pattern="(s.*)".r val v1="spark";...val r=v1 match { case Pattern(v1)=> "begin s*" case "1"=> "1" case "2"=> "2"...case 1=> "1" case 2=> "2" case 3=> "3" case _=> "default" } println(...case v1 if 5 until 10 contains v1=> "5-10" case _=> "not found" } println(r)//1-5 变形语法:...{ case 1 | "1" | "one" => "one " case "two"=> 2 case s:String => "String" case
第2行:通过type定义枚举类型的别名 第3行:我们的枚举从1开始,后续枚举值一次加1
import scala.util.parsing.json.JSON._ import scala.io.Source object ScalaJsonParse { def main(args...Unit = { var tt = Map.empty[String, Any] val tree = parseFull(Source.fromFile("/data/result.json...").mkString) tt = tree match { case Some(map: Map[String, Any]) => map } println(tt.getClass.getSimpleName
这里可直接看代码: import scala.util.parsing.json.JSON._ import scala.io.Source object XMLHelloWorld { def...main(args: Array[String]): Unit = { def regJson(json:Option[Any]) = json match { case Some...(map: Map[String, Any]) => map // case None => "erro" // case other => "Unknow...structure : " + other } // 解析List def regList(tmp:Option[Any]) = tmp match { case...(auc, precision_score, recall_score, ks_value)) git:https://github.com/MachineLP/Spark-/tree/master/scala-json
Scala 类相关 终于来到面向对象的地方了,虽说函数式编程是 Scala 的特性,让人们觉得 Scala 是更好的 Java。但是在架构层面上一直提倡着:小处用函数式编程,大处用面向对象编程。...scala> val tony = new User("tony","123456") tony: User = User@6a0659ac 也可以用 case 类来推断出构造方法的参数都是val类型的...scala> case class ImmutableUser(name:String,password:String) defined class ImmutableUser scala> val...单例对象、伴生对象、Case Class、Trait 2.1 单例对象 在Scala学习笔记(二)中,讲述过Scala 中没有静态修饰符 static,在 object 下的成员全部都是静态的,而且 object...他们的主要用途是可以用于工具类,或者定义 Scala 程序的入口等等。 来看一个伴生对象和伴生类使用的例子。
大家好,又见面了,我是你们的朋友全栈君 import com.google.gson.{ JsonObject, JsonParser} import scala.collection.JavaConversions...jsonParser = new JsonParser() val jsonObj = jsonParser.parse(jsonStr).asInstanceOf[JsonObject] val json2map
类似python元类与apply方法类似python中call方法 class Person(name: String, var age: Int){ println("Person") //private...this.name = name } override def toString(): String ={ this.age+this.name } } // object 类命与...class类命相同并且在一个文件中,伴生类,object下的成员都是静态的 , 若有同名的class,这其作为它的伴生类。...在object中一般可以为伴生类做一些初始化等操作 // 使用apply实现单例 object Dog{ private var age = 0 var instance:Dog = null
你可能知道的知识 当你声明了一个 case class,Scala 编译器为你做了这些: 创建 case class 和它的伴生 object 实现了 apply 方法让你不需要通过 new 来创建类实例...class 支持模式匹配 scala> case class A( a: Int ) defined class A scala> case class B( b: String ) defined...没有参数的时候,你是在使用 case object 而不是一个空参数列表的 case class scala> classMath( A ) A(100) 除了在模式匹配中使用之外,unapply...Person(Lacava,Alessandro,1976) 相对用 tuple 来创建 case class 实例,还可以从 case class 实例中解构并提取出 tuple 对象 scala...firstname和birthYear前不再自动添加 val,不再是类的成员 scala> val p = Person("Lacava")("Alessandro", 1976) p: Person
org.apache.http.message.BasicNameValuePair import org.apache.http.util.EntityUtils import org.slf4j.LoggerFactory import scala.collection.JavaConversions...._ import scala.reflect.macros.ParseException object HttpClientUtils { val logger = LoggerFactory.getLogger...response.getEntity() EntityUtils.toString(entity, "utf-8") } finally { response.close() } } catch { case...ex: ClientProtocolException => {logger.error(ex.getMessage);null} case ex: ParseException => {logger.error...(ex.getMessage);null} case ex: IOException => {logger.error(ex.getMessage);null} } finally { // 关闭连接
一个利用Java的IO类进行文件读取的例子: package cn.tzy import java.io....line.isEmpty) println(line.get) else hasNext = false } } catch { case ex:...Scala中无参函数调用的时候可以省略括号 2. Scala中推荐使用Option类,而不是Java中的obj != null这样的判断
在使用scala中的样例类时,如果要将对象转化为json字符串,需要在每一个属性前面加一个@BeanProperty,这样才能正常输出: ? ?...注:如果要在scala环境下用fastjson,一定要用JSON.toJSON(xxx).toString方法,不要直接用tojsonstring方法,否则scala会报错(ambiguous错误)
13.10 Scala中使用JSON.toJSONString报错:ambiguous reference to overloaded definition 问题描述: [ERROR] /Users/...jack/book/lightsword/src/main/scala/com/springboot/in/action/filter/LoginFilter.scala:28: error: ambiguous...元的货物,打75折 client.calPrice(49900, 75); } } 运行结果: 简单折扣后的价格是:¥374.25 这是一个计算商品价格折扣的模拟类,...带有变长参数的calPrice方法则是较复杂的折扣计算方式,多种折扣的叠加运算(模拟类是一种比较简单的实现)在实际生活中也是经常见到的,比如在大甩卖期间对VIP会员再度进行打折;或者当天是你的生日,再给你打个...针对可变参数的方法重载机制,这是Scala的与java在编译处理上区别的地方。 Scala分辨重载方法的过程与Java极为相似。任何情况下,被选中的重载版本都是最符合参数静态类型的那个。
在Scala里存在样例类。它的意义是为了减少重复代码,预先给类定义一些常用的方法。在Scala里使用case关键字来描述样例类。...scala> case class Test(name:String) defined class Test scala> val t = Test("a") t: Test = Test(a) scala...> t.name res0: String = a scala> t res1: Test = Test(a) 样例类t可以不使用new关键字就可以创建一个实例,并且构造参数在实例化的时候,就会分配给构造参数一个同名属性...,与一般的类不一样的是,样例类会覆写toString方法,使其返回的更加“正常”。...样例类最大的用途就是用于模式匹配,SparkSQL的解析器就是利用了Scala的模式匹配,大量简化了语法的解析。
喜欢总结一些工作中写的代码,将部分代码抽离出来,形成一个小的工具类或者jar包,方便在各个项目中使用,这样时间久了、总结的多了就形成了自己的代码库,这些都是自己的资源。...本篇将总结一个从Json字符串中直接取指定key值的工具类,详细代码如下: import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject
/** * JSON 校验字符串格式是否为合法的 JSON */ public class JsonValidator { private static CharacterIterator...static char c; private static int col; public JsonValidator(){ } /** * 验证一个字符串是否是合法的JSON
JSON字符串解码是借助Python中JSON库的内置方法load()和load()来完成的。...这里的转换表显示了从JSON对象到Python对象的示例,这有助于在JSON字符串的Python中执行解码。...True True False False Null None 让我们来看一个借助json.loads()函数在Python中进行解码的基本示例, import json # 引入json库 #json...", type(dict_obj)) # 获取类对象的详细信息 print("Person...在Python中解码JSON文件或解析JSON文件 注意:解码JSON文件是与文件输入/输出(I / O)相关的操作。JSON文件必须存在于系统中指定程序中指定位置的位置。
一、前述 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。 模式匹配机制相当于java中的switch-case。...使用了case关键字的类定义就是样例类(case classes),样例类是种特殊的类。 Actor相当于Java中的多线程。...一般情况下Scala的类可以继承多个Trait,从结果来看就是实现了多重继承。Trait(特征) 定义的方式与类类似,但它使用的关键字是 trait。...一个模式匹配包含了一系列备选项,每个都开始于关键字 case。 每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。 ...} 样例类(case classes) 1、概念理解 使用了case关键字的类定义就是样例类(case classes),样例类是种特殊的类。
本篇作为scala快速入门系列的第二十四篇博客,为大家带来的是关于抽象类的内容。 ? ---- 抽象类 和Java语言一样,scala中也可以定义抽象类。...定义 如果类的某个成员在当前类中的定义是不包含完整的,它就是一个抽象类。...设计4个类,表示上述图中的继承关系 每一个形状都有自己求面积的方法,但是不同的形状计算面积的方法不同 步骤: 创建一个Shape抽象类,添加一个area抽象方法,用于计算面积。...---- 抽象字段 在scala中,也可以定义抽象的字段。如果一个成员变量没有初始化,我们就认为它是抽象的。 语法 ?...示例 创建一个Person抽象类,它有一个String抽象字段WHO_AM_I 创建一个Student类,继承自Person类,重写WHO_AM_I字段,初始化为学生 创建一个Student类,继承自Person
在说到伴生对象之前,要先说到java的static关键字,static关键字修饰的变量、方法可以使类对象共享,而非某个对象单独拥有,所以是通过类名.变量名/方法名去调用。...使用反编译工具打开看看它们: Scala01_HelloWorld.class,伴生类 package com.sun.scala.chapter01; import scala.reflect.ScalaSignature...$.class,伴生对象所属类 package com.sun.scala.chapter01; import scala.Predef.; public final class Scala01_HelloWord...Scala是纯面向对象的,去除了java中的static关键字,通过伴生对象模拟static的效果(类名.变量名/方法名) 伴生对象 伴随着某个类产生的一个对象 当我们对源文件进行编译之后,默认会生成两个字节码文件...,一个是伴生类,另一个是伴生对象所属类 真正的伴生对象是伴生对象所属类中创建的单例对象 如果不想默认生成伴生类,可以手动生成,要求伴生类名称和伴生对象名称一致 所以在scala程序中,如果要想实现static
本篇是scala快速入门系列的第十七篇博客,为大家带来的是关于类和对象的内容。 ? ---- 类和对象 scala是支持面向对象的,也有类和对象的概念。...scala自动进行类型推断 在main方法中创建Person类对象,设置成员变量为"张三"、20 打印对象的名字和年龄 参考代码 ?...---- 定义成员方法 类可以有自己的行为,scala中也可以通过定义成员方法来定义类的行为。...定义 在scala的类中,也是使用def来定义成员方法 示例 创建一个Customer类 ?...但在scala中,没有public关键字,任何没有被标为private或protected的成员都是公共的 案例 定义一个Person类 ?
领取专属 10元无门槛券
手把手带您无忧上云