当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

面向Java开辟人员的Scala指南 - 调集典范[Java编程]

赞助商链接



  本文“面向Java开辟人员的Scala指南 - 调集典范[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

关于学习 Scala 的 Java™ 开辟人员来说,对象是一个对比自然、简单的进口点.在 本系列 前几期文章中,我介绍了 Scala 中一些面向对象的编程办法,这些办法实际上与 Java 编程的辨别不是很大.我还向您展示了 Scala 若何重新利用传统的面向对象概念,找到其缺陷,并按照 21 世纪的新需求重新加以改革.Scala 一向躲藏的一些重要内容将要现身:Scala 也是一种函数语言(这里的函数性是与其他 dys 函数语言相对而言的).

Scala 的面向函数性非常值得探究,这不但是因为已经研究完了对象内容.Scala 中的函数编程将供应一些新的计划构造和理念以及一些内置构造,它们使某些场景(比方并发性)的编程变得非常简单.

本月,您将初次进入 Scala 的函数编程范畴,查看大大都函数语言中常见的四种范例:列表(list)、元组(tuple)、调集(set)和 Option 范例.您还将理解 Scala 的数组,后者对其他函数语言来说非常新颖.这些范例都提出了编写代码的新方法.当结合传统面向对象特点时,可以生成非常简便的后果.

利用 Option(s)

在什么情形下,“无” 并不代表 “什么也没有”?当它为 0 的时刻,与 null 有什么关系.

关于我们大大都人都非常熟习的概念,要在软件中表示为 “无” 是一件非常艰难的事.比方,看看 C++ 社区中环绕 NULL 和 0 举行的激烈谈论,或是 SQL 社区环绕 NULL 列值展开的争辩,便可知晓一二.NULL 或 null 关于大大都程序员来说都表示 “无”,但是这在 Java 语言中引出了一些特别问题.

考虑一个简单操作,该操作可以从一些位于内存或磁盘的数据库查找程序员的薪资:API 答应调用者传入一个包含程序员名字的 String,这会返回什么呢?从建模角度来看,它应当返回一个 Int,表示程序员的年薪;但是这里有一个问题,假如程序员不在数据库中(大概根本没有招聘她,大概已经被辞退,要不就是输错了名字……),那么应当返回什么.假如返回范例是 Int,则不能返回 null,这个 “标志” 普通表示没有在数据库中找到该用户(您大概认为应当抛出一个非常,但是大大都时刻数据库丧失值并不能视为非常,因此不该该在这里抛出非常).

在 Java 代码中,我们终究将办法标志为返回 java.lang.Integer,这迫使调用者知道办法可以返回 null.自然,我们可以依靠程序员来全面归档这个场景,还可以依靠程序员读取 尽心预备的文档.这近似于:我们可以要求经理倾听我们反对他们要求的不大概完成的项目期限,然后经理再进一步把我们的反对传达给上司和用户.

Scala 供应了一种普通的函数办法,冲破了这一僵局.在某些方面,Option 范例或 Option[T],并不器重描写.它是一个具有两个子类 Some[T] 和 None 的泛型类,用来表示 “无值” 的大概性,而不需求语言范例系统大费周折地支持这个概念.实际上,利用 Option[T] 范例可以使问题越发清楚(下一节将用到).

在利用 Option[T] 时,关键的一点是熟习到它实质上是一个大小为 “1” 的强范例调集,利用一个差别的值 None 表示 “nothing” 值的大概性.因此,在这里办法没有返回 null 表示没有找到数据,而是举行声明以返回 Option[T],此中 T 是返回的原始范例.那么,关于没有查找到数据的场景,只需返回 None,以下所示:

清单 1. 预备好踢足球了吗?

@Test def simpleOptionTest =
  {
   val footballTeamsAFCEast =
    Map("New England" -> "Patriots",
      "New York" -> "Jets",
      "Buffalo" -> "Bills",
      "Miami" -> "Dolphins",
      "Los Angeles" -> null)

   assertEquals(footballTeamsAFCEast.get("Miami"), Some("Dolphins"))
   assertEquals(footballTeamsAFCEast.get("Miami").get(), "Dolphins")
   assertEquals(footballTeamsAFCEast.get("Los Angeles"), Some(null))
   assertEquals(footballTeamsAFCEast.get("Sacramento"), None)
  }


  以上是“面向Java开辟人员的Scala指南 - 调集典范[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Jt —— 面向Java情势的框架
  • 面向Java开辟人员的Scala指南 - 用Scitter更新Twitter
  • 面向Java开辟人员的Scala指南 - 类操作
  • 面向Java开辟人员的Scala指南 - 面向对象的函数编程
  • 面向Java开辟人员的Scala指南 - 实现承当
  • 面向Java开辟人员的Scala指南 - Scala和servlet
  • 面向Java开辟人员的Scala指南 - Scala掌握构造内部揭密
  • 面向Java开辟人员的Scala指南 - 包和访谒修饰符
  • <b>面向Java开辟人员的Scala指南 - 构建计算器,第1部份</b>
  • 面向Java开辟人员的Scala指南 - 构建计算器,第2部份
  • 面向Java开辟人员的Scala指南 - 构建计算器,第3部份
  • 面向Java开辟人员的Scala指南 - 关于特点和行为
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .