<我的备忘录>scala点滴知识记录

1.String 插入引用(需要在引用的变量前增加 s 标识)

val name="jiang"
val info=s"i am $name"
info: String = i am jiang
val age0=19
val str1=s"i am ${age0 + 1} years old"
str1: String = i am 20 years old

// 同样也能在类中使用
case class User(name:String,age:Int)
val user1=User("jiang",20)
println(s"${user1.name} is ${user1.age} years old")
//jiang is 20 years old

2.scala 正则表达式的使用

scala> val numPattern="[0-9]+".r
numPattern: scala.util.matching.Regex = [0-9]+
scala> val address="123 Main Street Suite 101"
address: String = 123 Main Street Suite 101
scala> numPattern.findFirstIn(address)
res4: Option[String] = Some(123)

3. trait 中继承方法或者参数的变量定义参数(var 和val差异)

val 继承的方法重写需要加overide

var 不需要

trait Person{
    var name:String
    val age=14
}
class Jiang extends Person{
    var name="jiang"
    override val age=19
}

4.Either 用法 -- 9/26

Either 相对于if else ------> Either返回值Left Right 可以不一致,返回值可以定义。if else 不同的返回值则为Any.

def eitherDemo(x:Int):Either[Int,String] = if(x>10) Left(2) else Right("Big Nim") 
scala: eitherDemo(15)
res15: Either[Int,String] = Left(2)
//--------------------------//
def ifDemo(x:Int) = if(x>2) 2 else "jiang"
scala> ifDemo(15)
res0: Any = 2

5.reduce 与fold差异简单说明  --9/28

reduce 的返回值必须和列表元素的返回值一致或者是父类,fold 无此限制但fold必须初始化其折叠值

List("1", "2", "3").foldLeft(0)((a, b) => a.toInt + b.toInt)     =>res0: Int = 6
List("1", "2", "3").reduceLeft((a, b) => a.toInt + b.toInt)   =>报错,类型不一致错误
         ---> 正确写法:List("1", "2", "3").reduceLeft(_+_)

6.what‘s meaning of   type MyType = Int =>Boolean? --9/28

先来看一个例子

type MyType = Int =>Boolean
def isTrue(x:Int) = x>0
val fun: MyType = isTure

定义一个参数为Int 返回值为Bollean 的类型值,type 赋予其别名为MyType.

可以说成fun的返回值须是一个由f(x:Int)函数生成的Boolean 值. stackoverflow

7.

val VulnerableVersions = Set( "2.0", "2.0.1", "2.0.2", "2.0.3", "2.0.4", "2.0.5","2.1", "2.1.1", "2.1.2")
val version = Option("2.1")
val result = version.filter(VulnerableVersions)

Option 的Api中filter方法:    final def filter(p:(A)=>Boolean):Option[A]

本例是不是看起来很奇怪,判断内容应该为Boolean 实际却是一个Set集合?

-->实际上 Set[A] extends A=>Boolean 得到的结果返回一个true 或者 getOrElse


时间: 2024-10-07 15:19:39

<我的备忘录>scala点滴知识记录的相关文章

Scala笔记整理(一):scala基本知识

[TOC] Scala简介 Scala是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性. Scala运行在Java虚拟机上,并兼容现有的Java程序. Scala源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库. 函数编程范式更适合用于Map/Reduce和大数据模型,它摒弃了数据与状态的计算模型,着眼于函数本身,而非执行的过程的数据和状态的处理.函数范式逻辑清晰.简单,非常适合用于处理基于不变数据的

搭建Debian源基础知识记录

文档一:https://wiki.debian.org/SettingUpSignedAptRepositoryWithReprepro 文档二:http://blog.jonliv.es/2011/04/26/creating-your-own-signed-apt-repository-and-debian-packages/ 搭建Debian源基础知识记录,码迷,mamicode.com

Scala学习(1)——Scala基础知识

本文要解决的问题: Spark主要是由Scala语言编写而成的,所以要真正深入了解Spark,必须要熟悉Scala,在此结合阅读<Scala编程>这本书的情况,对Scala语言做一个基本的总结. Scala的优势 (1)简洁 类型推断 函数创建的文法支持 (2)Java互操作性 可重用Java库 可重用Java工具 没有性能惩罚 Scala工作机制 编译成Java字节码 可在任何标准JVM上运行,甚至是一些不规范的JVM上 Scala编译器是Java编译器的作者写的 启动解释器 输入Scala

weblogic-重点知识记录-持续更新

本文主要记录在工作过程中遇到到一些问题现象以及重点知识-持续更新 1.boot.properties文件的作用? 解释:由于在脚本执行过程中会要求输入用户名和密码,因此要事先在security目录下编写一个密码读取文件boot.properties 2.weblogic中AdminiServer主管的作用? 解释:Admin Server 如果挂了,对于Domain中的Managed Server不会产生影响,如果配置了集群,对于负载均衡和Failover机制也不会产生影响,因为这些都是基于配置

html、css中常用的小知识记录

好多东西过一段时间不用就忘记了,为此写了这篇文章,用来记录每次想不起来的小知识! 1.鼠标停留显示提示,使用title .如:title

3.Scala基础知识

一.基本数据类型和变量 1.基本数据类型 java中每一个数据类型都是一个类: scala没有自己定义String类型,String类型是从java.lang.String照搬的. 字面量(literal) 2.变量 同一个环境中,可以重复使用同样一个变量名,只会记录最后一次用的那个类型. 二.输入输出 1.输入 2.输出 3.读写文件 (1)写入文件 文件保存在Scala启动目录 (2)读取文件 三.控制结构 1.if-else 2.while和do-while 3.for循环 四.数据结构

看angularjs项目的一些知识记录

这两天项目组长在安排我学习用angularjs+Echarts做的项目代码,边看边记录吧,给自己留个总结 1.Angularjs中UI Router文档 2.Angularjs中Material的使用 3.requirejs文档 几个指令特点记录 1.ng-value中可以写表达式 <input type="text" ng-value="price*num"/> 2.当我们点击checkbox 选中复选框时,ng-model 的绑定默认值是true,取

【转】Scala基础知识

原文地址.续 课程内容: 关于这节课 表达式 值 函数 类 继承 特质 类型 apply方法 单例对象 函数即对象 包 模式匹配 样本类 try-catch-finally 关于这节课 最初的几个星期将涵盖基本语法和概念,然后我们将通过更多的练习展开这些内容. 有一些例子是以解释器交互的形式给出的,另一些则是以源文件的形式给出的. 安装一个解释器,可以使探索问题空间变得更容易. 为什么选择 Scala? ·表达能力     ·函数是一等公民     ·闭包 ·简洁     ·类型推断     ·

[Scala] Scala基础知识

Object An object is a type of class that can have no more than one instance, known in object-oriented design as a singleton. Instead of creating an instance with a new keyword, just access the object directly by name. Objects provide similar "static&