scala(一种静态语言)
语法:
关键字 val(表示:值) 不可变
ex: val a:Int=1 或者 val a=1(会自动识别类型,无基本类与包装类之分)
输出:a:Int=1
关键字var
ex: var a:Int=1
输出: a:Int=1
方法(API)定义:def 方法名(参数:类型,...,参数:类型):返回值={函数体} (备注:在{}内的最后一行就是返回值)
API格式:方法名:(参数:类型,...,参数:类型)返回值(ex: add: (x: Int,y: Int)Int )
当不需要返回值类型为:def 方法名(参数:类型,...,参数:类型=默认参数):返回值(Unit){函数体} ex:add: (x: Int,y: Int)Unit (Unit代表返回值为空)
def add(x :Int*)={函数体} 可变长参数,备注类型必须都是Int
函数调用方式:如果一个函数不需要传参时,函数的()可以省略,直接方法名调用。但是:当def是没有()时,调用的时候不能有()
所有immutable包下面的都是不可变的,mutable包下面都是可变的。
scala是没有static的,使用object来实现(object没有同名的class(伴生类)则称之为游离对象)
1.to(10) 1 until 10 range(1,2) range(1,10,2)
for(i<-1 to 10) println(i) for(i<-1 to 10 if(i%2==0)) println(i)
var array = Array(1,2,3,4) array(0)
lazy: 懒加载,当真正调用的时候才会加载
占位符:_
元组:ex:val a=(1,2,3,4) ****************************************
访问方式:a._1,a._2
类加()调用的是object中的apply方法,对象加()调用的是class中的apply方法
对象 match {
}
case class 默认类参数是val类型
val _add = add _ _add:表示函数指针 _add:(Int,Int) => Int
匿名函数:(x:Int,y:Int)=>x+y res1(1,2) map(_*2)等价于map((x:Int)=>x*2)
1::2::3::Nil 返回的是List
flatern flatMap
<: , 向上看(上界)能看到什么。ex:[T<%Comparable[T]],T类型向上看必须能看到Comparable特质
scala隐式转换的规则:
scala(一种静态语言)的更多相关文章
- Python面试题之python是一种什么语言及优缺点
1.说说python是一种什么语言? 参考答案:python是一门动态解释性的强类型定义语言 编译型vs解释型 编译型优点:编译器一般会有预编译的过程对代码进行优化.因为编译只做一次,运行时不需要编译 ...
- 02_python是一种什么语言?
python是一种什么语言? 1.低级语言与高级语言 最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果.后来为了方便记忆,就将用0.1序列 ...
- 是否含有RTTI(运行时类型信息)是动态语言与静态语言的主要区别
运行时类型信息代表类型信息和对内存的操作能力. 运行时类型信息是运行时系统的基础. 类型信息分为编译时类型信息和运行时类型信息两种: 静态语言的类型信息只在编译时使用和保留,在可执行文件中没有类型信息 ...
- 【夔堂】:程序血泪史之——有一种垃圾语言叫做JavaScript
"Prototype"机制是个半成品OOP,有些文章说这玩意当初为了"简单(编写).容易(学习)"而发明的,但web前端技术发展到今天我们看到,JS显然是需要O ...
- 几种常见语言的命名空间(Namespace)特性
命名空间提供了一种从逻辑上组织类的方式,防止命名冲突. 几种常见语言 C++ 命名空间是可以嵌套的 嵌套的命名空间是指定义在其他命名空间中的命名空间.嵌套的命名空间是一个嵌套的作用域,内层命名空间声明 ...
- Perl,Python,Ruby,Javascript 四种脚本语言比较
Perl 为了选择一个合适的脚本语言学习,今天查了不少有关Perl,Python,Ruby,Javascript的东西,可是发现各大阵营的人都在吹捧自己喜欢的语言,不过最没有争议的应该是Javascr ...
- Unity3d中如何混用三种脚本语言?
首先要明白,这三种说的混用是指文件级别的混用,就是说一个文件是由一种语言写的.而不是说你这一个文件可以混用这三种语言,注意这是不允许的. 第二要明白,在unity3d中为什么可以使用三种语言混合开发? ...
- 杨辉三角(Pascal Triangle)的几种C语言实现及其复杂度分析
说明 本文给出杨辉三角的几种C语言实现,并简要分析典型方法的复杂度. 本文假定读者具备二项式定理.排列组合.求和等方面的数学知识. 一 基本概念 杨辉三角,又称贾宪三角.帕斯卡三角,是二项式系数在三 ...
- 关于"动态语言" "静态语言" "静态类型语言" "动态类型语言"的区别
参考链接:关于“编译型”“解释型”“动态语言”“静态语言”“动态类型语言”“静态类型语言”的区分以及优缺点(汇总整理) 很多人把这两类混为一谈,但是这是完全不同的两个概念!!! 动态和静态语言主要看的 ...
随机推荐
- 【Python让生活更美好01】os与shutil模块的常用方法总结
Python作为一种解释型的高级语言,脚本语言,又被称作“胶水语言”,就是因为其灵活的语法和其依靠浩如烟海的第三方包实现的丰富多彩的功能,而os和shutil就是这样一种功能强大的模块,可以非常快捷地 ...
- python2.7练习小例子(十七)
17):题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制. 程序分析: ...
- 9 udp广播
udp有广播 写信 tcp没有广播· 打电话 #coding=utf-8 import socket, sys dest = ('<broadcast>', 7788) # 创建udp ...
- 类的__new__方法使用
class Person(object): def __init__(self): self.name ="aaa" def defineName(self): self.name ...
- 雷哥带你走进Javascript
javascript复习笔记--------------------------------------------1.概念2.面向对象思想3.作用认识4.引入方式5.执行顺序 变量 1)声明方式 x ...
- 用起来超爽的Maven——进阶篇
以后随着使用的maven的频率增加,此文件会越来越大,也是为什么需要把默认C:\Users\Administrator\.m2 \repository目录改变为D:/OpenSources/repos ...
- 九度OJ--Q1163
import java.util.ArrayList;import java.util.Scanner; /* * 题目描述: * 输入一个整数n(2<=n<=10000),要求输出所有从 ...
- eth day05
智能合约众筹实战 淘宝众筹,京东众筹 https://izhongchou.taobao.com/index.htm 分析商业模式 解决京东众筹的痛点 https://izhongchou.taoba ...
- [ecmagnet][django] 如何使用django的signal
""" 在web开发中, 你可能会遇到下面这种场景: 在用户完成某个操作后, 自动去执行一些后续的操作. 譬如用户完成修改密码后,你要发送一份确认邮件 观察者模式:观察者 ...
- Linux 简单socket实现UDP通信
服务器端 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sy ...