For,Function,Lazy
package com.dtgroup.study
import scala.io.Source object ForFunctionLazy {
def main(args: Array[String]): Unit = {
// for
println("for:line 0")
for (i <- 1 to 2; j <- 1 to 2) println("i=" + i + ",j=" + j)
println("for:line 1")
for (i <- 1 to 2; j <- 1 to 2 if i == j) println("i=" + i + ",j=" + j)
println("for:line 2")
for (i <- 1 to 2; j <- 1 to 2 if i > j) println("i=" + i + ",j=" + j)
println("for:line 3")
for (i <- 1 to 2; j <- 1 to 2 if i != j) println("i=" + i + ",j=" + j)
// error: for(i<- 1 to 2;j <-1 to 2 if i<>j) println("i="+i+",j="+j) // func:
// 1,)the function with value
// 2,)the scala ide known the result type
// 3,)in the recursion must declare the result type.
def add(x: Int) = x * 2
// nickname function
val add2 = (x: Int) => x * 200
var i = 100;
println("func:line 0")
println(add(i))
println("func:line 1")
println(add2(i)) def fac(n: Int): Int = if (n <= 0) 1 else n * fac(n - 1)
println("func:line 2,The result from a fac is:" + fac(5)) // the parameter of function can be assigned value
def combine(content: String, left: String = "<", right: String = ">") = left + content + right
println("func:line 3,The result from a combine is:" + combine("value"))
println("func:line 4,The result from a combine is:" + combine("value", "[", "]")) // param[]
def connected(args: Int*) = {
var result = ""
for (arg <- args) result += "," + arg.toString
result
} println("func:line 5,The result from a connected is:" + connected(1, 2, 3, 4, 5, 6))
// lazy lazy val file = Source.fromFile("d:\\spark2.txt")
println("lazy:line 0")
for(line <- file.getLines()) println(line)
println("lazy:line 1")
}
}
1,)for 中可以执行嵌套,同时可以加过滤条件;
2,)函数:
a,)不仅仅有返回值时也是可以不写的,编译器会自动识别类型,但是如果使用在递归函数中必须指明返回值;
b,)函数是有值的,从匿名函数中可以看出该结论;
c,)函数的参数可以制定默认值;
d,)函数的参数可以使用“类型*”,不限制传递参数个数;
3,)Lazy的用法,懒执行,只有当第一次使用时才加载,在scala中,对代码优化有极大贡献。
For,Function,Lazy的更多相关文章
- [原创]Scala学习:for,function,lazy
1.for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环.Scalar的循环说明如下的各种形式: 1)Scala中for循环最简单的语法是: for( var x <- Rang ...
- 【javascript】详解变量,值,类型和宿主对象
前言 我眼中的<javascript高级程序设计> 和<你不知道的javascript>是这样的:如果<javascript高级程序设计>是本教科书的话, < ...
- 一篇文章带你了解JavaScript中的语法,数据类型,流程控制语句以及函数
作者 | Jeskson 来源 | 达达前端小酒馆 1 JavaScript有多重要啊,才能让我说说一下,其中的语法,操作符,数据类型,内置功能等. 语法: 在JavaScript中的变量,函数名和操 ...
- sass揭秘之@mixin,%,@function
因为文章内含有很多sass代码,如需自己动手查看编译结果,推荐使用sassmeister这款在线编译工具,方便你阅读学习. 在阅读本文章之前,请先确认你已经阅读了上篇文章sass揭秘之变量,不然会给你 ...
- std::function,std::bind
std::function 和 std::bind 标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数.bind()接受一个函数(或者 ...
- js中,(function(){})()的用法解析
(function($){...})(jQuery) 含义 经常用,今天总结一下,下文摘自某网友的总结: (function($){...})(jQuery)实际上是匿名函数,不懂得朋友可以继续往下 ...
- 百度地图API详解之事件机制,function“闭包”解决for循环和监听器冲突的问题:
原文:百度地图API详解之事件机制,function"闭包"解决for循环和监听器冲突的问题: 百度地图API详解之事件机制 2011年07月26日 星期二 下午 04:06 和D ...
- $(function() {....}) ,(function($){...})(jQuery)
$(function() {....}) 是 jQuery 中的经典用法,等同于 $(document).ready(function() {....}),即在页面加载完成后才执行某个函数,如果函数中 ...
- 转载:$(function() {}),即$(document).ready(function(),什么时候执行?以此为准,真理
转载:https://blog.csdn.net/Ideality_hunter/article/details/77935656 $(function() { //执行操作 }); $(functi ...
随机推荐
- APP测试流程
1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先向 ...
- 关于Autoit上传文件的问题
Autoit上传文件需要安装两个软件: 使用这个做文件上传时:在代码中需要添加的代码如下: Runtime.getRuntime().exec("d:/zhpg.exe"); D盘 ...
- #nav li:hover ul 与#nav li a:hover ul 的区别
#nav li:hover ul 与#nav li a:hover ul 有什么区别? ──────────────────────────────────────────── #nav li:hov ...
- c#面向对象基础 重写、虚方法、抽象类
虚方法 抽象类与抽象方法 1.书写规范: 在类前面加上abstract关键字,就成为了抽象类:在一个方法前面加上abstract关键字,就成为了抽象方法(抽象方法不能有实现方法,直接在后面加分号) 例 ...
- SpringMVC表单标签简介
在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍SpringMVC的表单标签之前,我们需 ...
- 关于java多线程
package testSynchronized; /** * * 当使用this也就是该文件中的testclass对象作为对象锁时, * 两个线程都使用该对象锁访问该对象的同步代码块, * 是顺序执 ...
- BizTalk动手实验(一)安装BizTalk Server 2010开发环境
1 课程简介 通过本课程了解BizTalk 2010的软依赖及基本的安装配置步骤,BizTalk相应的解决方案及高可用性方案可在课程的基础进行深入学习. 2 准备工作 硬件环境:CPU >2.0 ...
- 建造者模式(Builder)
GOF:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 类图:
- mango-1.4.1 文档
文档目录 快速开始 添加依赖包 数据库准备 创建HelloWorld类 书写插入与查询方法 构造数据源并初始化mango对象 获取dao并调用插入与查询方法 查看完整示例代码和表结构 基本操作 准备工 ...
- 实现服务器端与客户端的实时通信 SignalR(1)
一.本文出处:SignalR 实例介绍 (建议看原著里面有DEMO下载) 二.这篇文章介绍如何利用 VS2012 创建一个简单的实时聊天系统,建好后的样子如下(模拟三个在线用户): 三.Demo ...