Scala学习笔记持续更新

Scala下载及IDEA安装Scala插件(保姆级教程超详细) 一.Scala的下载与安装 Scala语言可以在Windows,Linux,Mac OS等系统上编译运行。由于Scala是运行在JVM平台上的,所以安装Scala之前必须配置好JDK环境(JDK版本要求不低于1.5!),本博客为基于Windows系统下安装。 JDK环境下载路径:https://www.oracle.com/java/technologies/downloads/#java8 注:根据自己的系统选择对应的JDK进行下载,版本不低于1.5! 阅读详情

Scala学习笔记

方法和函数的区别

  • Scala中的方法和Java中的方法相同,方法是组成类的一部分。方法有名字和签名,同时还有注解,以及方法的功能。

  • Scala中的函数是一个完整的对象,Scala中用22个特质(trait)抽象出了函数的概念。]\

    例如:Function2的函数:

    trait Function2[@specialized(scala.Int, scala.Long, scala.Double) -T1, @specialized(scala.Int, scala.Long, scala.Double) -T2, @specialized(scala.Unit, scala.Boolean, scala.Int, scala.Float, scala.Long, scala.Double) +R] extends AnyRef { self =>
      /** Apply the body of this function to the arguments.
       *  @return   the result of function application.
       */
      def apply(v1: T1, v2: T2): R
      /** Creates a curried version of this function.
       *
       *  @return   a function `f` such that `f(x1)(x2) == apply(x1, x2)`
       */
      @annotation.unspecialized def curried: T1 => T2 => R = {
        (x1: T1) => (x2: T2) => apply(x1, x2)
      }
      /** Creates a tupled version of this function: instead of 2 arguments,
       *  it accepts a single [[scala.Tuple2]] argument.
       *
       *  @return   a function `f` such that `f((x1, x2)) == f(Tuple2(x1, x2)) == apply(x1, x2)`
       */
    
      @annotation.unspecialized def tupled: Tuple2[T1, T2] => R = {
        case Tuple2(x1, x2) => apply(x1, x2)
      }
      override def toString() = "<function2>"
    }
    

    其中:

    		//  以下两种定义函数的
            val f1 = (i: Int, b: Int) => {
                i + b
            }
    
            var f2 = new Function2[Int, Int, Int]() {
                override def apply(v1: Int, v2: Int): Int = {
                    v1 + v2
                }
            }
    
    1. 方法不能作为单独的表达式而存在(参数为空的方法除外),而函数可以;
     //m1 方法不可以
    def m1(x:Int,y:Int)={
                x+y
            }
     //f1方法本身就是一个对象,直接可以单独最为表达式存在
     val f1 = (i: Int, b: Int) => {
                i + b
            }
    

    2.函数必须要有参数列表,但方法可以没有参数列表

    
    

    3.方法名是函数的调用,函数名只代表函数本身

      //如果想要由编译器自动推断返回函数的类型,需要在返回函数的后面增加下划线,意味着函数不执行,而是用于返回
            def f222():=>Unit= {
                f22 _ //使用函数
            }
      	def f222():Unit= {
                f22  //调用方法 
            }
    

Scala中的隐式转换

  • 什么是隐式转换

    示例代码:

    object ImplicitTest {
        def main(args: Array[String]): Unit = {
    	
    		//如果没有implicit的隐式函数,那么声明的变量i会出现错误
            implicit  def f(i:Double): Int ={
                i.toInt
            }
            var i:Int =1.0
        }
    
    }
    
  • 隐式函数: 通过iimplicit的关键字声明的带有单个参数的函数,这种函数将会自动应用,将从一种类型转换为另一种类型。

    • 隐式函数与函数名无关,与函数的参数类型和返回值类型有关

    • 隐式函数可以有多个,但要保证只有一个隐式函数能被识别

      object ImplicitTest {
          def main(args: Array[String]): Unit = {
      
      
              implicit  def f(i:Double): Int ={
                  i.toInt
              }
              implicit  def f1(i:Float):Int={
                  i.toInt
              }
             /* implicit def f2(i:Double):Int={  //必须保持在作用域内,参数类型和返回类型唯一
                  i.toInt
              }*/
              var i:Int =1.0
          }
      
      }
      
    • 隐式类,给类增加功能

      object ImplicitTest2 {
          def main(args: Array[String]): Unit = {
              
              implicit def f(m:Mysql)={
                  new DB
              }
              val mysql: Mysql = new Mysql
              mysql.add()
              mysql.update()
              mysql.delete() //delete的方法是通过隐式转换得到的,可以进行功能扩展
              
          }
      
      }
      
      class Mysql{
          def add()={
              println("增加数据")
          }
          def update()={
              println("更新数据")
          }
      }
      
      class DB{
          def delete()={
              println("删除数据")
          }
      }
      
    • 隐式值: 隐式变量,将某个形参的变量标记为implicit,所以编译器会在方法省略参数的情况下去搜索作用域内的隐式值作为缺省参数

      object ImplicitValTest {
          def main(args: Array[String]): Unit = {
      
      
              implicit  var name ="hello";
      
      
              def f1(implicit  name:String ="java"): Unit ={
                  println(name +"\thello")
              }
      
              
              f1 //结果为 hello hello
              f1("scala") //结果为 scala hello //编译器的传值优先级为 传值>隐式值>
              默认值
      
          }
      
      }
      
  • 隐式类

    • 特点

      • 其所带的构造参数只能有一个
      • 隐式类必须定义在 类,伴生对象,或包对象里,及隐式类不能是顶级的
      • 隐式类不能是case class
      • 作用域内不能有与之名称相同的标识符
    • 示例代码

      object ImplicitClassTest {
          def main(args: Array[String]): Unit = {
              implicit class DB1(val m:Mysql1){
                  def addSuffix():String={
                      m + "scala"
                  }
              }
      
              val mysql = new Mysql1
              mysql.helloMysql()
              mysql.addSuffix()
          }
      
      }
      
      //class DB1{ }  
      
      class Mysql1{
          def helloMysql()={
              println("Mysql")
          }
      }
      
软件工程:数据字典 数据字典 阅读详情

相关推荐

ENVI 5.3与IDL 8.5安装指南:从下载到激活的完整流程

本文提供了一份详细的ENVI 5.3与IDL 8.5安装教程,涵盖从获取安装包、运行主程序、安装许可证到关键文件替换的完整流程。指南重点解决了激活过程中的常见问题,并分享了个人实践经验,旨在帮助用户,特别是遥感图像处理初学者,一次性顺利完成软件部署,为后续的科研与开发工作奠定基础。

weixin_29213827的博客 546

scala知识点(一)

1.drop,dropRight,dropWhile drop: drop(n: Int): List[A] 丢弃前n个元素,返回剩下的元素 dropRight: dropRight(n: Int): List[A] 丢弃最后n个元素,返回剩下的元素 dropWhile: dropWhile(p: (A) ⇒ Boolean): List[A] 从左向右丢弃元素,直到条件p不成立 1 ...

weixin_34217773的博客 223

Anomalib实战:从零开始构建自定义数据集的异常检测模型

本文详细介绍了如何使用Anomalib 2.1.0从零开始构建自定义数据集的异常检测模型。通过实战演示,指导读者准备符合规范的数据集结构,快速上手训练Patchcore等先进算法,并完成模型推理与调优,为工业质检、医疗影像等场景提供高效的视觉异常检测解决方案。

weixin_29165465的博客 109

spark ml 推荐源码笔记二

上次我们讲到als对象train方法的 val solver = if (nonnegative) new NNLSSolver else new CholeskySolver

chencheng12077的博客 856

APK静态分析(取证角度)——理论部分

APP是指应用程序(Application),是指能够在手机、平板电脑、电脑等移动设备上运行的软件。APP可以帮助用户进行各种功能操作,如社交媒体、游戏、购物、学习、工作等。用户可以通过应用商店或者在线下载安装APP,然后在设备上使用它们。APP的种类非常丰富,能够满足用户不同的需求和兴趣。

currify的博客 3208

setup time和hold time的计算

内容仅仅为了方便记忆,与原理无关

sddhyl的博客 7816

scala学习笔记【持续更新】

scala-doc下载链接 可以用迅雷打开链接进行下载:https://www.scala-lang.org/files/archive/scala-docs-2.**.*.zip

weixin_45805060的博客 275

SDR 和 DDR 的区别

SDR 和 DDR 的差别,最明显提现在传输速率和频率上。DDR SDRAM与SDRAM的基本结构是相似的,最根本的区别在于DDR 支持在一个时钟周期内传输两次数据,,SDR 只能传输一次数据。

串起点滴 1960

scala 学习笔记-持续更新中

scala 学习笔记-持续更新中 学习列表: scala官方文档scala cheattwitter Scala 课堂有趣的 Scala 语言: 使用递归的方式去思考《scala 编程》 几乎一切乎都是表达式 scala> 1 + 1 res0: Int = 2 复合表达式——{} 花括号用于创建复合表达式,复合表达式的返回值是最后一

山海經的博客 873

SAP-ABAP:FI财务会计模块常用BAPI及核心用途实例说明

SAP FI模块的BAPI覆盖了从主数据管理、凭证过账到财务关账的全流程操作,是系统集成与自动化的重要工具。实际应用中需结合业务场景选择合适的BAPI,并严格遵循事务控制与校验规则。如需扩展功能,可通过BAdI或用户出口增强标准逻辑。

baidu_35680696的博客 1601

基于Python的Steam游戏评论与销量数据爬取及预测分析

随着数字游戏市场的蓬勃发展,Steam作为全球最大的数字游戏分发平台,积累了海量的游戏数据与玩家行为数据。本文旨在通过Python网络爬虫技术,采集Steam平台的游戏基本信息、玩家评论数据及销量相关信息,为后续的游戏评论情感分析与销量预测模型构建提供数据支持。本文将详细介绍使用requestsselenium等库实现Steam数据爬取的全过程,并提供完整的代码实现与数据处理方法。关键词:Steam;Python爬虫;数据采集;评论分析;销量预测。

2201_76125261的博客 855

Scala 的学习笔记系列(持续更新中)

最近学习 Scala,因它是灵活的函数式编程,还有就是能为 PlayFramework 2.0 服务,看的是 《Programming in Scala》 那本书,并记下自己认为值得记录的东西,列举 Scala 用元组/列表类型实现多返回值的函数 Scala 无参数方法和统一访问原则 Scala 的 apply 和 update 方法的应用 Scala 特质(trait) 的 su

一叶不知秋 1000

基于深度学习的涂胶缺陷类型检测:数据集处理与YOLOv8模型实现

本文提出了一种基于YOLOv8深度学习的涂胶缺陷检测系统,针对断胶、溢胶、缺胶、气泡及胶条宽度异常等常见缺陷类型,实现了从数据采集到模型部署的完整解决方案。系统采用工业相机采集涂胶图像,通过多形态数据增强策略解决样本稀缺问题,利用YOLOv8框架实现高效检测。相比传统人工目检和规则式机器视觉方法,该系统在检测精度(mAP达97.5%)和实时性(单图检测耗时0.038秒)方面表现优异,可满足智能制造场景下的涂胶质量检测需求。

huanghm88的专栏 271

Scala速成

scala 学习笔记-持续更新中 http://www.jianshu.com/p/06808aed982b

lishuan182的博客 611

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

好久不见!!菜鸟学习笔记之Scala学习笔记(部分),持续更新~~

文章目录Scala简介快速入门之HelloWorldIDEA开发Scala工程创建Scala开发规范Scala基础语言学习Chap01.内容输出与文档查看Chap02.变量2.1 声明/定义2.2 val与var2.3 数据类型2.3.1Char类型使用注意2.3.2、Unit、Null和Nothing2.3.3、类型转换Chap03.运算符Chap04.流程控制Scala函数式编程学习Chap05.函数编程入门5.1、函数function 和 方法method5.2、函数的定义5.3、函数的使用注意5.4

5akura's Blog 1336

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

自学it18大数据笔记-第三阶段Scala-day05——会持续更新……

笔记为自学时随手记录,如有错误,欢迎指正,不胜感激!现已广州转移至上海,欢迎小伙伴们加qq或微博沟通交流(QQ,微博和博客同名) 笔记分享:自学it18大数据笔记-第三阶段Scala-day05——会持续更新…… 第三阶段Storm-day5见:http://t.cn/Ra2t9Ej 第三阶段Scala-day04见:http://t.cn/RacOa1m Scala-day0...

weixin_30776273的博客 140

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Scala学习笔记(二)--------数组Array方法大全(持续更新中) 介绍+演练

Scala 数组 Scala 语言中提供的数组是用来存储固定大小的同类型元素,数组对于每一门编辑应语言来说都是重要的数据结构之一。 声明数组变量并不是声明 number0、number1、…、number99 一个个单独的变量,而是声明一个就像 numbers 这样的变量,然后使用 numbers[0]、numbers[1]、…、numbers[99] 来表示一个个单独的变量。数组中某个指定的元素是通过索引来访问的。 数组的第一个元素索引为0,最后一个元素的索引为元素总数减1。 声明数组 var z:Arr

小白 1428

重学scala:scala函数式编程与高阶函数_定义一个数组,把其中偶数取出来,scala语言

自定义排序,根据函数来定义排序规则sortWith方法API说明参数传入一个比较大小的函数对象,接收两个集合类型的元素参数,返回两个元素大小,小于返回true,大于返回false返回值List[A]返回排序后的列表//降序//升序//字典序升序。

2401_84592231的博客 322

Linux 安装 scala2,图文详解

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。需要完整版PDF学习资源私我。

2301_77054033的博客 1120

scala 学习持续更新

scala 学习持续更新搭建Scala开发环境,使用Intellij IDEA开发Scala程序1_scala的基本语法2 scala 环境搭建及其各种符号的含义3 scala 基本语法 脚本4、scala学习 tuple Array Map5 scala 基本语法...

架构师的成长之路的博客 1935

Scala -- Scala中“_“的用法总结(持续更新)

1. 导包时,多引用的方法,和java中的*类似 例如: import scala.collection.mutable._ 2. 访问元组时,和值一起使用表示第几个元素 例如: val/var 元组名 = (元素1, 元素2, 元素3....) //获取第一个元素 元组名._1 //获取第二个元素 元组名._2 3. 在方法转函数时,在方法名后面用<空格>加 ‘_’ 来进行转换 例如: def method1(x:Int,y:Int):Int = x+y val f2 = method1&

erainm 2456

你们要的Scala语言全家桶来咯,持续更新ing。。。

SCALA语言 作者认为scala是最简单又方便的的语言, 懒人必备。 1.scala的概述 1.1什么是scala scala它是一门语言 学过的其他语言:java js shell c C++ 1.2scala它是多范式的编程语言: (1)面向对象 (2)面向函数式编程 f(x)=y 函数式编程和它的高级特性(泛型,隐士类,隐士函数,隐士参数等等) 1.3 scala语言的优点: 快,代码简洁 1.4scala语言的缺点: 难以理解 为什么要学习scala 2.1优雅: 这是框架设计师第一个要

Internation985的博客 412

scala数组函数(持续更新)

**++**将两个数组合并成一个新的数组 scala> var a = Array("aaa","bbb","ccc") a: Array[String] = Array(aaa, bbb, ccc) //定义了一个String类型的数组a,a的内容为aaa,bbb,ccc scala> var b = Array(1,2,3,4) b: Array[Int] = Array(1, 2, 3, 4) //定义了一个Int类型的数组b,a的内容为1,2,3,4 scala> var c

Of_the_new的博客 969

scala学习系列(四) Scala关键字(持续更新)

Scala有39个关键字: package, import, class, object(伴生对象关键字), trait, extends, with, type, for private, protected, abstract, sealed, final, implicit, lazy, override try, catch, finally, throw (scala中不需要抛异常...

FreedomZzzzz的博客 1650
上一篇: SQL的规范
下一篇: Sql练习题总结持续更新
keepHungery
博客等级 码龄8年 115粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值