当前位置: 首页 > news >正文

微信分销网站建设价格如何免费建设自己稳定的网站

微信分销网站建设价格,如何免费建设自己稳定的网站,网站想做个链接怎么做,大型门户网站建设包括哪些方面原文链接#xff1a;http://www.cnblogs.com/MOBIN/p/5351900.html----------------------------------------------摘要#xff1a;通过隐式转换#xff0c;程序员可以在编写Scala程序时故意漏掉一些信息#xff0c;让编译器去尝试在编译期间自动推导出这些信息来#xf… 原文链接http://www.cnblogs.com/MOBIN/p/5351900.html----------------------------------------------摘要通过隐式转换程序员可以在编写Scala程序时故意漏掉一些信息让编译器去尝试在编译期间自动推导出这些信息来这种特性可以极大的减少代码量忽略那些冗长过于细节的代码。使用方式1.将方法或变量标记为implicit2.将方法的参数列表标记为implicit3.将类标记为implicitScala支持两种形式的隐式转换隐式值用于给方法提供参数隐式视图用于类型间转换或使针对某类型的方法能调用成功隐式值例1声明person方法。其参数为name类型Stringscala def person(implicit name : String) name //name为隐式参数 person: (implicit name: String)String 直接调用person方法 scala person console:9: error: could not find implicit value for parameter name: Stringperson^ 报错编译器说无法为参数name找到一个隐式值 定义一个隐式值后再调用person方法scala implicit val p mobin //p被称为隐式值 p: String mobin scala person res1: String mobin 因为将p变量标记为implicit所以编译器会在方法省略隐式参数的情况下去搜索作用域内的隐式值作为缺少参数。 但是如果此时你又在REPL中定义一个隐式变量再次调用方法时就会报错scala implicit val p1 mobin1 p1: String mobin1 scala person console:11: error: ambiguous implicit values:both value p of type Stringand value p1 of type Stringmatch expected type Stringperson^ 匹配失败所以隐式转换必须满足无歧义规则在声明隐式参数的类型是最好使用特别的或自定义的数据类型不要使用Int,String这些常用类型避免碰巧匹配 隐式视图隐式转换为目标类型把一种类型自动转换到另一种类型 例2将整数转换成字符串类型scala def foo(msg : String) println(msg) foo: (msg: String)Unitscala foo(10) console:11: error: type mismatch; found : Int(10) required: String foo(10) ^ 显然不能转换成功解决办法就是定义一个转换函数给编译器将int自动转换成String scala implicit def intToString(x : Int) x.toString intToString: (x: Int)Stringscala foo(10) 10 隐式转换调用类中本不存在的方法 例3通过隐式转换使对象能调用类中本不存在的方法 class SwingType{def wantLearned(sw : String) println(兔子已经学会了sw) } object swimming{implicit def learningType(s : AminalType) new SwingType } class AminalType object AminalType extends App{import com.mobin.scala.Scalaimplicit.swimming._val rabbit new AminalTyperabbit.wantLearned(breaststroke) //蛙泳 } 编译器在rabbit对象调用时发现对象上并没有wantLearning方法此时编译器就会在作用域范围内查找能使其编译通过的隐式视图找到learningType方法后编译器通过隐式转换将对象转换成具有这个方法的对象之后调用wantLearning方法 可以将隐式转换函数定义在伴生对象中在使用时导入隐式视图到作用域中即可如例4的learningType函数 还可以将隐式转换函数定义在凶对象中同样在使用时导入作用域即可如例4 例4 class SwingType{def wantLearned(sw : String) println(兔子已经学会了sw) }package swimmingPage{ object swimming{implicit def learningType(s : AminalType) new SwingType //将转换函数定义在包中} } class AminalType object AminalType extends App{import com.mobin.scala.Scalaimplicit.swimmingPage.swimming._ //使用时显示的导入val rabbit new AminalTyperabbit.wantLearned(breaststroke) //蛙泳 } 像intToStringlearningType这类的方法就是隐式视图通常为Int String的视图定义的格式如下      implicit def  originalToTarget (argument : OriginalType) : TargetType 其通常用在于以两种场合中 1.如果表达式不符合编译器要求的类型编译器就会在作用域范围内查找能够使之符合要求的隐式视图。如例2当要传一个整数类型给要求是字符串类型参数的方法时在作用域里就必须存在Int String的隐式视图2.给定一个选择e.t如果e的类型里并没有成员t则编译器会查找能应用到e类型并且返回类型包含成员t的隐式视图。如例3隐式类在scala2.10后提供了隐式类可以使用implicit声明类但是需要注意以下几点1.其所带的构造参数有且只能有一个 2.隐式类必须被定义在类伴生对象和包对象里 3.隐式类不能是case classcase class在定义会自动生成伴生对象与2矛盾 4.作用域内不能有与之相同名称的标示符 例5object Stringutils {implicit class StringImprovement(val s : String){ //隐式类def increment s.map(x (x 1).toChar)} } object Main extends App{import com.mobin.scala.implicitPackage.Stringutils._println(mobin.increment) } 编译器在mobin对象调用increment时发现对象上并没有increment方法此时编译器就会在作用域范围内搜索隐式实体发现有符合的隐式类可以用来转换成带有increment方法的StringImprovement类最终调用increment方法。 隐式转换的时机 1.当方法中的参数的类型与目标类型不一致时 2.当对象调用类中不存在的方法或成员时编译器会自动将对象进行隐式转换隐式解析机制 即编译器是如何查找到缺失信息的解析具有以下两种规则 1.首先会在当前代码作用域下查找隐式实体隐式方法  隐式类 隐式对象 2.如果第一条规则查找隐式实体失败会继续在隐式参数的类型的作用域里查找 类型的作用域是指与该类型相关联的全部伴生模块一个隐式实体的类型T它的查找范围如下 1如果T被定义为T with A with B with C,那么A,B,C都是T的部分在T的隐式解析过程中它们的伴生对象都会被搜索 2如果T是参数化类型那么类型参数和与类型参数相关联的部分都算作T的部分比如List[String]的隐式搜索会搜索List的 伴生对象和String的伴生对象 3 如果T是一个单例类型p.T即T是属于某个p对象内那么这个p对象也会被搜索 4 如果T是个类型注入S#T那么S和T都会被搜索 隐式转换的前提1.不存在二义性如例12.隐式操作不能嵌套使用如 convert1(covert2(x))y3.代码能够在不使用隐式转换的前提下能编译通过就不会进行隐式黑铁
http://www.yutouwan.com/news/244556/

相关文章:

  • 新农村基础设施建设网站网站整站下载
  • 网站在哪备案无锡电商网站设计
  • 网站服务器的搭建建设企业网站得花多少
  • 微信定制开发小程序wordpress 百度优化 插件
  • 有关外贸的网站有哪些内容江西省寻乌县建设局网站
  • 做仿牌网站被封泾川县住房和城乡建设局网站
  • 网站首页设计代码做个人网站怎么赚钱
  • 品牌商标购买网站网站demo制作工具
  • 什么样的网站适合搜索引擎收录wordpress noindex
  • 外贸五金网站开网店需要准备什么资料
  • 国外网站为啥速度慢中关村手机报价大全
  • 个人建网站wordpress自动获取标签
  • 帝国网站管理 上一条 下一条 链接 信息id 信息发布时间国外做的好点电商网站
  • 长沙网站优化排名推广中国科技
  • 临沂谁会做网站淘客网站做单品类
  • 企业网站建设哪家好wordpress图片上添加图标
  • 莞城网站建设公司专业外贸公司网站
  • 怎么区分模板网站visualstudio网页设计作业
  • 新乡专业做网站多少钱wordpress cdn
  • 织梦系统做的网站怎么样wordpress上传功能
  • 网站开发视频播放好做吗网页设计实训报告范文免费
  • 广东省建设合同备案网站惠州网站建设行业
  • 自助免费建网站国内ui设计培训
  • 菏泽网站建设公司有哪些网站开发和软件开发有什么区别
  • 常用网站域名如何做好网站建设内容的策划
  • 网站建设企业战略网站建设方案报价费用明细价格
  • 常见的网站开发语言泰安 网站建设公司
  • 做soho 怎么建立网站psd模板免费下载网站
  • 北京网站建设公司文字排版个人博客首页
  • 广州一起做网店属于什么网站网站关键字排名怎么做