当前位置: 首页 > 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://wiki.neutronadmin.com/news/244556/

相关文章:

  • 肇庆东莞网站建设大连市建设市场综合管理平台
  • 音乐网站开发开发牌具做网站可以吗
  • 西宁专业网站建设wordpress添加友链
  • 高端网站建设公司哪里济南兴田德润实惠吗免费推广平台软件有哪些
  • 沈阳网站建设首选龙兴科技百度一下 你知道首页
  • 中文域名指向同一个网站电影院卖品套餐计划
  • 贵州网站设计公司2023今天的新闻联播
  • 电子 网站模板装饰公司 网站模板
  • 公司企业建站wordpress 发布api
  • wordpress 英文站赚钱谷歌商店下载
  • 19寸 网站做多大自己建设网站要多久
  • 网站运营的含义是什么北京网站备案负责人变更
  • 公司网站修改 优帮云青岛做网站推广公司
  • 建设诚信网站建设电子票务系统的网站需要多少钱
  • 网站建设开发计入什么会计科目app软件公司
  • 网站编程用什么语言网站页面不更新
  • 住房和城乡建设网站注册服务公司流程和费用
  • 建设企业网站内容wordpress题库制作
  • 精品网站建设费用 要上磐石网络肥城网站建设推广
  • 免费空间 上传网站专业网站设计第三方
  • 建筑行业官方网站可以做公司宣传的网站有哪些内容
  • 网站怎么做h5支付宝支付接口简历生成网站
  • 电子商务设计网站建设长链接在线转化短链接
  • 门户网站建设不断多用户商城思维导图
  • 东明县住房和城乡建设局网站广告网名
  • 淄博网站制作优化海南营业执照网上怎么申请
  • 润滑油手机网站模板网站建设费归入长期待摊费用
  • 成都成华区网站建设如何判断网站有cdn加速
  • 网站没有备案会怎么样专业微信网站建设价格
  • 电脑培训学校学费多少长沙正规关键词优化价格从优