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 ...
随机推荐
- 优化UITableViewCell高度计算的那些事
优化UITableViewCell高度计算的那些事 我是前言 这篇文章是我和我们团队最近对 UITableViewCell 利用 AutoLayout 自动高度计算和 UITableView 滑动优化 ...
- linux 有趣的命令
input: echo ' > ..XXX. .XXX.. > .XXXXY.TXXXX. > XXXXXYXTXXXXX > .VXXVYXTVXXX. > `.TYX ...
- css3 半个字符美化方法
<html lang="zh-CN"> <head> <title></title> <meta charset=" ...
- UDP和TCP的区别(转)
TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...
- 理解group by 语句的扩展使用
在SQL的开发中我们会经常使用group by语句对数据进行分组统计,然而在一些复杂的BI报表开发中会常遇到更复杂的分组需求,单单使用group by 就不能解决我们的问题了,这时我们就需要学习了解一 ...
- Eclipse 官方简体中文语言包下载地址及安装方法
Eclipse 官方简体中文语言包下载地址及安装方法 打开Eclipse Babel Project 主页: http://www.eclipse.org/babel/downloads.php 根据 ...
- JSTL 核心标签库 使用(C标签)
JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...
- Ajax Post 与 Get 实例
Ajax的POST实例,index.html <html> <head> <script type="text/javascript"> fun ...
- mysql批量替换指定字符串
将字段title中的abc替换为123 UPDATE `table1` SET `title` = replace(title, 'abc', '123') WHERE `typeid` =18;
- 词频junit测试
package search; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; impor ...