1.作为隐式参数

 object Test {

   def main(args: Array[String]) {
import FruitColor._
Fruit.get("apple")
}
} object Fruit{
def get(fruitName:String)(implicit fruitColor:String): Unit ={
println(s"$fruitName color is $fruitColor")
}
} object FruitColor{
implicit val color:String="red"
}

2 implict class

在类的可视范围内,主构造函数可以进行隐式转换。

限制:1.implict class必须定义在trait/class/object中

2.在构造函数中只能有一个非隐式的参数

3.在implict class的视界范围内,不能有同名的method、member和object。

object Main{
def main(args: Array[String]) {
import Helpers._
times println("test")
}
} object Helpers{
implicit class IntWithTimes(x:Int){
def times[A](f: => A): Unit ={
def loop(current:Int): Unit ={
if(current>){
f
loop(current-)
}
}
loop(x)
}
}
}

3.implict object

注意:隐式值不能在top-level的位置,需要作为一个member使用

object Main{

  def sum[A](xs:List[A])(implicit m:Monoid[A]):A={
if(xs.isEmpty)m.unit
else m.add(xs.head,sum(xs.tail))
} implicit object IntMonoid extends Monoid[Int]{
def add(x:Int,y:Int):Int=x+y
def unit:Int=
} implicit object StringMonoid extends Monoid[String]{
override def unit:String = "" override def add(x: String, y: String): String = x concat y
} def main(args: Array[String]) {
println(sum(List(,,)))
println(sum(List("a","b","c")))
} } abstract class SemiGroup[A]{
def add(x:A,y:A):A
}
abstract class Monoid[A] extends SemiGroup[A]{
def unit:A
}

Reference:

1.http://docs.scala-lang.org/overviews/core/implicit-classes.html

2.http://docs.scala-lang.org/tutorials/tour/implicit-parameters.html

scala中的implict的更多相关文章

  1. Scala中使用implict 扩展现有类的方法

    Scala中implict的一种用法就是扩展现有类的方法,有点类似于.Net中的扩展方法(MS对扩展方法的介绍:扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改 ...

  2. Scala中apply的用法

    Scala中的 apply 方法有着不同的含义, 对于函数来说该方法意味着调用function本身, 以下说明摘自Programming in Scala, 3rd Edition Every fun ...

  3. scala中的面向对象定义类,构造函数,继承

    我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面 ...

  4. Scala中的None,Nothing,Null,Nil

    在scala中这四个类型名称很类似,作用确实完全不同的. None是一个object,是Option的子类型,定义如下 case object None extends Option[Nothing] ...

  5. Scala中Iterator允许执行一次

    背景 使用spark执行mapPartitionsWithIndex((index,iterator)=>{....}),在执行体中将iterator进行一次迭代后,再次根据iterator执行 ...

  6. 第52讲:Scala中路径依赖代码实战详解

    今天学习了scala中的路径依赖,来看一下实战代码 class Outer{  private val x = 10  class Inner{    private val y = x +10  } ...

  7. 第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用

    今天学习了下scala中的链式调用风格的实现,在spark编程中,我们经常会看到如下一段代码: sc.textFile("hdfs://......").flatMap(_.spl ...

  8. scala入门教程:scala中的面向对象定义类,构造函数,继承

    我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面 ...

  9. Scala 中object和class的区别

    Scala中没有静态类型,但是有有“伴侣对象”,起到类似的作用. Scala中类对象中不可有静态变量和静态方法,但是提供了“伴侣对象”的功能:在和类的同一个文件中定义同名的Object对象:(须在同一 ...

随机推荐

  1. 报错: App Transport Security has blocked a cleartext HTTP (http://) resource load since it is ins

    环境:Xcode7.1.1 + iOS9.1 详细错误: App Transport Security has blocked a cleartext HTTP (http://) resource ...

  2. C#_Stopwatch 类

    命名空间:System.Diagnostics Stopwatch 实例可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间.在典型的 Stopwatch 方案中,先调用 Start 方 ...

  3. js动态加载html,加载后的页面元素某些事件失效的解决方案

    用 live 来绑定 例如: $("#items li .addToCartimg").live("click",function(){ $('.popDeta ...

  4. itext poi 学习之旅 (1)创建pdf

    从零开始学习itext 创建pdf 1.用到流进行创建的pdf import java.io.File; import java.io.FileOutputStream; import com.ite ...

  5. 指针 v.s. 引用

    对C++的指针总觉得和引用差不多,其实还是挺有差别的. 程序 先看一个小程序: ; int& ra = a; int* pa = &ra; printf("&a = ...

  6. Jade学习笔记

    初学nodejs,折腾过用handlebars做模板,后来隔了一段重新学习,用了jade,真心简洁……记录一些学习笔记,以备复习. jade是基于缩进的,所以tab与space不能混用: 属性的设置: ...

  7. 转载:mysql-Auto_increment值修改

    转载网址:http://libo93122.blog.163.com/blog/static/1221893820125282158745/ | 2012-03-13 11:19:10 | 2012- ...

  8. 使用PowerDesigner 15对现有数据库进行反向工程(图解教程)

    1.启动PD 2.菜单:File->Reverse Engineer ->Database 出来New Physical Data Model对话框 点击“确定”按钮,弹出Database ...

  9. PyQt4环境搭建与使用

    初次使用python写图形界面的工具时,用了Tkinter.wxpython,都是需要手写界面布局的,看api看的头疼觉得这样写太费劲了,于是搜了下看看别人都是怎样写python图形界面的. 在论坛上 ...

  10. 文件操作IO流

    fopen 打开文件或者生成文件 getc 向文件中读取一个字符 putc 向文件中写入一个字符 fgets 向文件中读取字符串 参数可以设置获取多少个字符串 fputs 向文件中写入字符串 不自动添 ...