1.在scala中每个表达式都有值,scala中有个Unit类,写做(),相当于Java中的void
val n = if (1 < 2) () println(n)
2.在scala中{}中可包含一系列表达式,块中最后一个表达式的值就是块的值
//下面就是一个块表达式 val result = { if (x < 0){ -1 } else if(x >= 1) { 1 } else { "error" } } //result的值就是块表达式的结果 println(result)
3.高级for循环:每个生成器都可以带一个条件,注意:if前面没有分号
for(i <- 1 to 3; j <- 1 to 3 if i != j) print((10 * i + j) + " ") println()
4.for推导式:如果for循环的循环体以yield开始,则该循环会构建出一个集合
//每次迭代生成集合中的一个值 val v = for (i <- 1 to 10) yield i * 10 println(v)
5.Scala中的+ - * / %等操作符
Scala中的+ - * / %等操作符的作用与Java一样,位操作符 & | ^ >> <<也一样。只是有
一点特别的:这些操作符实际上是方法。例如:
a + b
是如下方法调用的简写:
a.+(b)
a 方法 b可以写成 a.方法(b)
6.将方法转换成函数(神奇的下划线)
方法名 空格 下划线
7.好用的until会生成脚标,0 until 10 包含0不包含10
8.在Scala中没有静态方法和静态字段,但是可以使用object这个语法结构来达到同样的目的
1.存放工具方法和常量
2.高效共享单个不可变的实例
3.单例模式
在Scala的类中,与类名相同的对象叫做伴生对象,类和伴生对象之间可以相互访问私有的方法和属性
通常我们会在类的伴生对象中定义apply方法,当遇到类名(参数1,...参数n)时apply方法会被调用
9.在Scala中,你不需要给每一个函数命名,没有将函数赋给变量的函数叫做匿名函数
由于Scala可以自动推断出参数的类型,所有可以写的跟精简一些
还记得神奇的下划线吗?这才是终极方式
10.柯里化指的是将原来接受两个参数的方法变成新的接受一个参数的方法的过程
11.隐式转换函数是指那种以implicit关键字声明的带有单个参数的函数
标签:函数,Scala,笔记,参数,操作符,方法,表达式 来源: https://www.cnblogs.com/dintalk/p/15599578.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。