0004.For与function进阶实战、lazy加载

1.For与function进阶实战
package  com.jn.scala.hello

/**
 * @author jiangning
 */
object  For_Function_Advanced  {
   def  main ( args : Array[  String ]){
//    1. 可以同时写两个变量,中间用分号隔开
//    不需要在这里申明i,j的类型, scala会自动辨认
     for ( i  <-  1  to  2 ;  j  <-  1  to  2 )
       print (( 100 *  i + j  )  +  " "  )
     println
   
//    2. 在for的括号内还可以添加判断
     for ( i  <-  1  to  2 ;  j  <-  1  to  2  if ( i  !=  j ))
      print (( 100 *  i + j  )  +  " "  )
      println
     
//      3.有方法名的函数,addA方法名,x为参数名,x+100是方法内的计算
//      函数一定时有值的,a函数可以作为一个参数传给b函数
       def  addA ( x  : Int) =  x  +  100
     
//      4.add变量名字,(x : Int)是匿名函数,x+100在匿名函数内的计算
//      关心函数中间的算法,不关心函数叫什么名字,
//      将函数赋值给一个常量,
//      没有写返回值的类型,一般 scala会根据右边的表达式,知道返回值类型。
       val  add  = (x : Int) =>  x  +  100
       println ( "The result from a function is :"  +  addA ( 2  ))
       println ( "The result from a val is :"  +  add (  2 ))
     
//      5.递归运行中一定要有返回值类型的指定,其他可以不知道返回值类型
//      下面是斐波那契数列计算
       def  fac ( n : Int): Int =  if ( n  <=  0  )  1  else  n  *  fac ( n  - 1 )
       println ( "The result from a fac is :"  +  fac (  3 ))
     
//      6.参数可以有初始值,当参数传入值的时候,默认值被替换
       def  combine ( content :  String ,  left :  String = "["  , right  : String = "]" )=  left  +  content  +  right
       println ( "The result from a combine is :"  +  combine ( "I love Spark"  ))
       println ( "The result from a combine is :"  +  combine ( "I love Spark"  , "<<"  ))
     
//      7.可变参数,最后一行的返回值,要写result,最后一个表达式就是返回值
       def  connected ( args : Int*)={
         var  result  =  0
         for ( arg  <-  args  )  result  +=  arg
         result
      }
       println ( "The result from a connected is :"  +  connected ( 1  , 2  , 3  , 4  , 5  ))
       println ( "The result from a connected is :"  +  connected ( 1  , 2  , 3  , 4  , 5  , 6  ))
  }
}

2.lazy加载
package  com.jn.scala.hello

import  scala.io.Source

/**
 * @author jiangning
 */
object  LazyOps  {
   def  main ( args : Array[  String ]){
//    1.下面这句后,会抛出异常,然后无法进行打印,
//    val file2 = Source.fromFile("d://jiangningtest.txt")
//    println("Scala")
//    2.这里是延迟执行,懒加载, Hibernate中有类似这样的处理。
     lazy  val  file  =  Source . fromFile  ( "d://jiangningtest.txt"  )
     println ( "Can print Scala" )
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值