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 ...
随机推荐
- ios推送:本地通知UILocalNotification
Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notificati ...
- 运行java的class文件方法详解
一.运行class文件 执行带main方法的class文件,命令行为:java <CLASS文件名>注意:CLASS文件名不要带文件后缀.class 例如: 复制代码代码如下: java ...
- golang channel 用法转的
一.Golang并发基础理论 Golang在并发设计方面参考了C.A.R Hoare的CSP,即Communicating Sequential Processes并发模型理论.但就像John Gra ...
- ng-switch 指令
<!--标准用法--> <div ng-switch on="showSecret"> <div ng-switch-when="true& ...
- Redis常用命令(一)
Redis::__construct描述:创建一个Redis客户端范例:$redis = new Redis(); connect, open描述:实例连接到一个Redis.参数:host: stri ...
- Compound Words
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=91209#problem/C 题意: 有一堆按照字典序排好的字符串,问你有多 ...
- 怎么在Centos7下添加win8.1的启动项
首先找到启动文件. 在/boot/grub2目录下, 找到grub.cfg文件. 然后, sudo修改, 用gedit工具方便. 怎么修改? 打开文件, 找到有两个menuentry开头的部分, 然 ...
- 【转】Linux安装方法一(U盘引导)
Ubuntu 13.04正式版已经在4月25日发布了,相信很多人和我一样很想安装体验一下,但是现在的Ubuntu 13.04文件已经是794M,但是很难刻录到一张CD中,所以采用U盘启动安装Ubunt ...
- geometric median
The geometric median of a discrete set of sample points in a Euclidean space is the point minimizing ...
- requirejs解决异步模块加载方案
他首先会遍历enableRegistry取出其中定义的模块,并且将没有加载成功的模块标识注入noLoads数组,如果过期了这里就会报错 如果上述没问题还会做循环依赖的判断,主要逻辑在breakCycl ...