【Scala】箭头符号使用场景

第一次使用,晕菜了_(¦3」∠)_

目录

1、=>的用法

1.1 匿名函数

1.2 按名调用(By-Name Parameters)

1.3 表示函数的类型

1.4 模式匹配(case语句)

2、<- 的用法

3、->的用法


1、=>的用法

1.1 匿名函数

object Hello extends App{
  var userDir = () => { System.getProperty("user.dir") }
  println( userDir() ) //yourpath

// mul这时候相当于一个函数啦,给函数传x,y参数,执行x*y的动作
  var mul = (x: Int, y: Int) => x*y
  println(mul(3, 4)) //12

// 无传入参数
  var test = () => {println("无传入参数的测试")}
  println(test)
  // Hello$$$Lambda$19/0x00000001000c6c40@3ecd23d9
  // 至于结果为什么是这样的,我还不清楚。。。
}

1.2 按名调用(By-Name Parameters

Scala 中允许使用高阶函数, 高阶函数可以使用其他函数作为参数,或者使用函数作为输出结果。

object ByName {
  def main(args: Array[String]) {

    println( apply( layout, 10) )

  }
  // 函数 f 和 值 v 作为参数,而函数 f 又调用了参数 v
  def apply(f: Int => String, v: Int) = f(v)

  def layout[A](x: A) = "[" + x.toString() + "]"

}

// [10]

 上图换成Boolean就编译失败了。。。

1.3 表示函数的类型

题外话(scala中函数和方法真的有不一样)Scala method(方法) 和 functio(函数) 的区别

暂时我还没有用到(*^▽^*) 

 

1.4 模式匹配(case语句)

在模式匹配 match 和 try-catch 都用 “=>” 表示输出的结果或返回的值

object MatchTest extends App {

  def matchTest(x: Int): String = x match {
    case 1 => "one"
    case 2 => "two"
    case _ => "many"
  }
  println(matchTest(3))
}

// many
// 这段代码也可以看出,scala并不需要main方法

 

2、<- 的用法

<- 只会出现在for循环里面。

// foreach循环,可变参数的循环
  def printStrings( args:String* ) = {
    var i : Int = 0;
    for( arg <- args ){
      println("Arg value[" + i + "] = " + arg );
      i = i + 1;
    }
  }
//  for (i <- 1 to 10) //普通循环
//    println(i + " 的阶乘为: = " + factorial(i) )

 

3、->的用法

只会出现在k->v里面。

object Test {
   def main(args: Array[String]) {
      val colors = Map("red" -> "#FF0000",
                       "azure" -> "#F0FFFF",
                       "peru" -> "#CD853F")

      val nums: Map[Int, Int] = Map()

      println( "colors 中的键为 : " + colors.keys )
      println( "colors 中的值为 : " + colors.values )
      println( "检测 colors 是否为空 : " + colors.isEmpty )
      println( "检测 nums 是否为空 : " + nums.isEmpty )
   }
}

/*
colors 中的键为 : Set(red, azure, peru)
colors 中的值为 : MapLike(#FF0000, #F0FFFF, #CD853F)
检测 colors 是否为空 : false
检测 nums 是否为空 : true
*/

 


后续还有

上界 <:, 下界>:, 视界 <%, 边界 :, 协变 +T, 逆变-T

可怕。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

以上内容参考:

Scala中=>与<=的区别

使用scala写排序:https://github.com/TheAlgorithms/Scala/blob/master/src/main/scala/Sort/HeapSort.scala

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值