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的更多相关文章

  1. [原创]Scala学习:for,function,lazy

    1.for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环.Scalar的循环说明如下的各种形式: 1)Scala中for循环最简单的语法是: for( var x <- Rang ...

  2. 【javascript】详解变量,值,类型和宿主对象

    前言 我眼中的<javascript高级程序设计> 和<你不知道的javascript>是这样的:如果<javascript高级程序设计>是本教科书的话, < ...

  3. 一篇文章带你了解JavaScript中的语法,数据类型,流程控制语句以及函数

    作者 | Jeskson 来源 | 达达前端小酒馆 1 JavaScript有多重要啊,才能让我说说一下,其中的语法,操作符,数据类型,内置功能等. 语法: 在JavaScript中的变量,函数名和操 ...

  4. sass揭秘之@mixin,%,@function

    因为文章内含有很多sass代码,如需自己动手查看编译结果,推荐使用sassmeister这款在线编译工具,方便你阅读学习. 在阅读本文章之前,请先确认你已经阅读了上篇文章sass揭秘之变量,不然会给你 ...

  5. std::function,std::bind

    std::function 和 std::bind 标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数.bind()接受一个函数(或者 ...

  6. js中,(function(){})()的用法解析

    (function($){...})(jQuery)  含义 经常用,今天总结一下,下文摘自某网友的总结: (function($){...})(jQuery)实际上是匿名函数,不懂得朋友可以继续往下 ...

  7. 百度地图API详解之事件机制,function“闭包”解决for循环和监听器冲突的问题:

    原文:百度地图API详解之事件机制,function"闭包"解决for循环和监听器冲突的问题: 百度地图API详解之事件机制 2011年07月26日 星期二 下午 04:06 和D ...

  8. $(function() {....}) ,(function($){...})(jQuery)

    $(function() {....}) 是 jQuery 中的经典用法,等同于 $(document).ready(function() {....}),即在页面加载完成后才执行某个函数,如果函数中 ...

  9. 转载:$(function() {}),即$(document).ready(function(),什么时候执行?以此为准,真理

    转载:https://blog.csdn.net/Ideality_hunter/article/details/77935656 $(function() { //执行操作 }); $(functi ...

随机推荐

  1. 基于jquery的图片懒加载js

    function lazyload(option){ var settings={ defObj:null, defHeight: }; settings=$.extend(settings,opti ...

  2. git两种合并方法 比较merge和rebase

    18:01 2015/11/18git两种合并方法 比较merge和rebase其实很简单,就是合并后每个commit提交的id记录的顺序而已注意:重要的是如果公司用了grrit,grrit不允许用m ...

  3. HDU 4454 Stealing a Cake(枚举角度)

    题目链接 去年杭州现场赛的神题..枚举角度..精度也不用注意.. #include <iostream> #include <cstdio> #include <cstr ...

  4. Selenium_获取相对坐标

    <html> <head> <title>位置</title> <style> .test { background: url(" ...

  5. ArcGIS几种数据格式

    ArcGIS几种数据格式 ArcInfo常用以下格式的数据:shp.Coverage..Raster CAD和Geodatabase.各种数据的组织形式不一样,其中shp.Coverage.Raste ...

  6. mysql相似于oracle的to_char() to_date()方法

    mysql日期和字符相互转换方法, date_format(date,'%Y-%m-%d')  -------------->oracle中的to_char(); str_to_date(dat ...

  7. Map 映射

    package lis0924; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import j ...

  8. PHP如何关闭notice级别的错误提示

    1.在php.ini文件中改动error_reporting改为:error_reporting=E_ALL & ~E_NOTICE2.如果你不能操作php.ini文件,你可以使用如下方法在你 ...

  9. angular.js学习笔记之一

    angular也是一个MVC框架,其中M即model模型表示服务器,V即view视图代表html代码,C即control控制器用来处理用户交互的部分.

  10. .net 文件下载【转】

    方式一:TransmitFile实现下载.将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件.     protected void Button1_Click(object send ...