scala官网

https://www.scala-lang.org/

菜鸟教程学习

http://www.runoob.com/scala/scala-basic-syntax.html

w3school

https://www.w3cschool.cn/scala/85pl1jc9.html

查看scala的返回值类型,可以使用  表达式.var  回车即可查看

 idea里设置scala语言的table跨格数

当new类时,类中除了方法不执行其他都执行

object相当于java中的单例,定义的都是静态

class可以传参传参就有了默认的构造语句,this方法

重写构造时,第一行要先调用默认的构造

object不可以传参,apply方法

伴生类好的伴生对象

Scala里面如何使用break和continue

 

格式化快捷键

ctrl+shift+alt+L

scala REPL

可以直接在类加载里面写输出,而不需要放在方法里,而方法调用object里的属性,因为是类单例,可以直接调用

apply方法相当于构造方法的重载

注意点:
l 建议类名首字母大写 ,方法首字母小写,类和方法命名建议符合驼峰命名法。
l scala 中的object是单例对象,相当于java中的工具类,可以看成是定义静态的方法的类。object不可以传参数。另:Trait不可以传参数
l scala中的class类默认可以传参数,默认的传参数就是默认的构造函数。
重写构造函数的时候,必须要调用默认的构造函数。
l class 类属性自带getter ,setter方法。
l 使用object时,不用new,使用class时要new ,并且new的时候,class中除了方法不执行,其他都执行。
l 如果在同一个文件中,object对象和class类的名称相同,则这个对象就是这个类的伴生对象,这个类就是这个对象的伴生类。可以互相访问私有变量。

foreach操作

 冒号是代表返回值 =>代表指向=代表等同于

_是占位符

上述(1,2)(3,4)实质是前两者为函数本身的内容即a和b,后两者3,4是返回函数的的输入即v1和v2 而(Int,Int)=>Int的最后Int是返回函数的返回值

下面的(a,b)=>{a+b}是给函数f赋予函数执行体

上述的例子:即

把f函数给构造出来,并在(a:Int,b:Int)=>{a*b} 的时候把f函数给构造成为两数相乘的函数传入

 柯理化函数http://www.runoob.com/scala/currying-functions.html

菜鸟教程数组

 当字符串进行数组或者list,set等下面运算时,是加到后面,不是加到数组里面

val arr1=arr.+("hello")

此时hello是单独放在arr数组外面的后面,而不是数组里面后面

记住,可变长,或者var

var或者mutable其中一个存在,即是可变的

x._1和x._2分别代表map的键和值,

遍历keys的时候

map.keys返回的map的iterable迭代器类型

如果map或者list或者数组等里面有不同种类的数值时,类型为Any

个人觉得是相反的,++是map2加入map1,而++:是map1加入map2

因最后的例子输出结果是map1覆盖了map2即如图,因map覆盖特性,觉得例子中++:是map1加入map2

count和filter例子输出结果为

即count是把满足条件的个数输出,返回值为Int,filter是把满足条件的键值对输出

返回布尔值,

过滤查找值为200的并输出

python中元组不可修改用()表示,列表可修改用[]表示,字典是用{}表示

即必须tuple所带参数和tuple内参数个数相同,且不能超过22

上面为元组嵌套,t._1._2意思为tuple2元组里的第一个内容元组的第二个值,即元组(1,2)的第二个值2

下面增加

输出

更改重写的方法

p3p4输出为

因为先匹配到Int,所以后续的1,2,3,4不会看,因为3是浮点型,继续往下,所以是3

因此我们若想要先输出1,2,3,4再判别,则可以将Int的判别放在后面

之所以先启动1,是因为1是接受者,要先启动接受者,避免启动发送者,没有接受者报错

用占位符替代,完成一行代码的,这种操作要记得

基本语法

Scala 基本语法需要注意以下几点:

    • 区分大小写 -  Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义。

    • 类名 - 对于所有的类名的第一个字母要大写。
      如果需要使用几个单词来构成一个类的名称,每个单词的第一个字母要大写。

      示例:class MyFirstScalaClass

    • 方法名称 - 所有的方法名称的第一个字母用小写。
      如果若干单词被用于构成方法的名称,则每个单词的第一个字母应大写。

      示例:def myMethodName()

    • 程序文件名 - 程序文件的名称应该与对象名称完全匹配(新版本不需要了,但建议保留这种习惯)。
      保存文件时,应该保存它使用的对象名称(记住Scala是区分大小写),并追加".scala"为文件扩展名。 (如果文件名和对象名称不匹配,程序将无法编译)。

      示例: 假设"HelloWorld"是对象的名称。那么该文件应保存为'HelloWorld.scala"

    • def main(args: Array[String]) - Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分

标识符

Scala 可以使用两种形式的标志符,字符数字和符号。

字符数字使用字母或是下划线开头,后面可以接字母或是数字,符号"$"在 Scala 中也看作为字母。然而以"$"开头的标识符为保留的 Scala 编译器产生的标志符使用,应用程序应该避免使用"$"开始的标识符,以免造成冲突。

Scala 的命名规则采用和 Java 类似的 camel 命名规则,首字符小写,比如 toString。类名的首字符还是使用大写。此外也应该避免使用以下划线结尾的标志符以避免冲突。符号标志符包含一个或多个符号,如+,:,? 等,比如:

+ ++ ::: < ?> :->

Scala 内部实现时会使用转义的标志符,比如:-> 使用 $colon$minus$greater 来表示这个符号。因此如果你需要在 Java 代码中访问:->方法,你需要使用 Scala 的内部名称 $colon$minus$greater。

混合标志符由字符数字标志符后面跟着一个或多个符号组成,比如 unary_+ 为 Scala 对+方法的内部实现时的名称。字面量标志符为使用"定义的字符串,比如 `x` `yield`。

你可以在"之间使用任何有效的 Scala 标志符,Scala 将它们解释为一个 Scala 标志符,一个典型的使用为 Thread 的 yield 方法, 在 Scala 中你不能使用 Thread.yield()是因为 yield 为 Scala 中的关键字, 你必须使用 Thread.`yield`()来使用这个方法。

数据类型是因为在运行时占用内存,所以数据类型是可以分开,使得效率提高

Anyvel          所有值类型的超类

输出全部1到10

最新文章

  1. Java-加载数据库驱动,取得数据库连接
  2. Fedora17安装MySQL及配置
  3. xcode 8 &#160; 去除无用打印信息
  4. 我的Modbus Slave/Client开发历程(Rtu/AscII/Tcp)
  5. C#制作ActiveX控件及部署升级(摘自网络)
  6. http soap关系
  7. Delphi 获取北京时间(通过百度和timedate网站)
  8. Windows Server 2008防火墙问题及Sql Server2005用户登录问题
  9. DataTable转换实体类
  10. java中float/double浮点数的计算失精度问题(转)
  11. Aop介绍及几种实现方式
  12. Error:Error #2174
  13. Java中的基本类型和引用类型变量的区别
  14. 该用Python还是SQL?4个案例教你节省时间
  15. HTML5网页制作(3)
  16. PHP获取新插入的主键id
  17. Mybatis foreach标签含义
  18. Log4net(二)-——关联配置文件的方式总结
  19. 力扣(LeetCode)728. 自除数
  20. centos下同时启动多个tomcat

热门文章

  1. Django组件—forms组件
  2. Python Tkinter编程
  3. Python小知识点(4)--模块相关
  4. delphi 选择文件夹,路径选择,浏览文件夹
  5. CentOS Grub、BASH 故障、解决方法
  6. DDD-EF-数据仓储
  7. java之api讲解
  8. Excel另存为_有些Excel打开时会出现一些提示
  9. 读书笔记 Week6 2018-4-12
  10. 使用BlendingTexture实现简单的Terrain