本文目录
- Scala语言的主要应用领域与作用
- 请问“Scala“是什么
- 大数据scala是什么
- Scala 是一门怎样的语言,具有哪些优势
- 编程语言scala有哪些特点
- Scala 在大数据处理方面有何优势
- 如何学好Scala
- scala的实际应用场景有哪些
- ADO.NET ExecuteScalar方法返回的是什么
Scala语言的主要应用领域与作用
Scala的特性1.面向对象特性Scala是一种纯面向对象的语言,每一个值都是对象。对象的数据类型以及行为由类和特征(Trait)描述。类抽象机制的扩展有两种途径。一种途径是子类继承,另一种途径是灵活的混入(Mixin)机制。这两种途径能避免多重继承的种种问题。2.函数式编程Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的CaseClass及其内置的模式匹配相当于函数式编程语言中常用的代数类型(AlgebraicType)。更进一步,程序员可以利用Scala的模式匹配,编写类似正则表达式的代码处理XML数据。在这些情形中,顺序容器的推导式(comprehension)功能对编写公式化查询非常有用。由于JVM不支持尾部递归,Scala也不能完全支持尾部递归优化。不过,在简单的情况下,Scala编译器可以把尾部递归优化成循环。4.静态类型Scala是具备类型系统,通过编译时的检查,保证代码的安全性和一致性。类型系统具体支持以下特性:泛型类,型变注释(VarianceAnnotation),类型继承结构的上限和下限,把类别和抽象类型作为对象成员,复合类型,引用自己时显式指定类型,视图,多态方法。5.扩展性Scala的设计承认一个事实,即在实践中,某个领域特定的应用程序开发往往需要特定于该领域的语言扩展。Scala提供了许多独特的语言机制,可以以库的形式轻易无缝添加新的语言结构:任何方法可用作前缀或后缀操作符,可以根据预期类型自动构造闭包。联合使用以上两个特性,使你可以定义新的语句而无须扩展语法也无须使用宏之类的元编程特性。5.使用Scala的框架Lift是一个开源的Web应用框架,旨在提供类似RubyonRails的东西。因为Lift使用了Scala,所以Lift应用程序可以使用所有的Java库和Web容器。scala语言主要应用领域cala运行于JVM之上,并且它可以访问任何的java类库并且与java框架进行互操作,scala也大量重用了java类型和类库。大数据的开发语言是Scala的原因:1:大数据的本身是计算数据,而Scala即有面向对象组织项目工程的能力,又有计算数据的功能。2:现在大数据事实上的计算标准框架Spark,它是用Scala开发的,因为计算数据,Scala它是函数式编程,它实现算法非常简洁优雅。例:kafka,它是一个消息中间件,如果外部数据要流进大数据中心,我们一般都要用kafka作适配器,那如果大数据中心的数据流到外部,也是用kafka(如Spark计算的数据要交给HBASE或MySql,期间我们都会用kafka),很多的大数据组件都是用的Scala编写的,所以,如果你想成为一个较高级的大数据开发高手,你一定要掌握Scala。
请问“Scala“是什么
Scala软件的特点集中体现在以财务管理为核心的的高度集成化与全球化。 Scala Global Series是Scala全集成的电子商务管理软件,具有财务及资源管理、市场营销管理、供应流程管理、服务及项目流程管理、制造及商务智能管理。 Scala Global Series是多语言的,并继翻译成30多种语言,在世界60多个国家销售、安装和提供技术支持和服务。 Scala软件符合跨国公司对货币的要求。 Scala 5.1 - 最新版,它基于Microsoft SQL Server 7.0,提供超强的数据库管理能力,为客户提供增强的会计核算能力。Scala 5.1已通过BASDA(商业及会计软件开发商协会)按其有关EMU多货币和三角式运算的高级要求认证。 Scala Global Series 本地化及将全球运作集成起来绝非易事。然而Scala Global Series的电子商务管理解决方案已为您打造好了一切。Scala的用户能用自己的语言操作软件,并同时用总部的语言和货币制作报表。不仅如此,Scala国际化的员工队伍为您提供本地化的专业知识,以及全球性的技术支持服务。 详细情况,请与当地Scala销售代表联系pr@scala.com.cn Scala Global Series是全集成的电子商务管理解决方案(eBMS),可管理众多的商务流程,具有多语言能力(被译成30多种语言),且全面支持跨国公司(其中当然包括欧元)对世界各货币的要求,它运行于Microsoft SQL Server 7.0之上, 具有出色的数据库管理能力。支持Windows 2000。Scala Global Serie在世界60多个国家销售、安装和提供技术支持服务。 Scala Global Series具有按本地会计准则和国际公认会计准则US-GAAP并行呈报的能力。此外,Scala Global Series符合跨国公司对货币的要求。Scala将全球化标准融于本地化专长之中。 Scala深谙您的全球商务。 ●财务 总分类帐;销售分类帐;采购分类帐;合并 ●物流 采购管理;销售订单;销售订单/开发票;统计;库存管理;直接开发票;市场信息 ●制造流程管理 制造流程管理;产品成品核算/实际成本;车间管理;基础制造数据;主生产计划;物料需求计划;订单计划/生产活动管理 ●服务 服务管理;项目管理 ●人力资源 人事薪资 ●系统实施 Signature 1. 总分类帐 会计核算是各公司运营的核心。Scala的总分类帐功能和灵活性体现了Scala其它商务管理模块的通用性。十构面的会计核算体系贯穿各个模块,它不仅能满足不同的法规要求,还能满足分析型会计核算的要求。您能从所用的任何构面呈报或查询实际数值或预算值。加之Scala系统中内置的多货币多语言功能,使Scala成为当今全球及本地会计核算及商务管理领域中最强大的系统之一。 2. 销售分类帐 要改善公司的现金流量,就要先建立有效的销售分类帐。一个功能强大的销售分类帐,不仅能更好地完成货款回收,还能奠定销售及市场营销的基础。Scala的销售分类帐模块是您实现财务及经营目标的有力工具。它包括开发票、付款、收款及呈报的例程,同时,它还能详细地记录相应的新币值及记帐值。它提供的客户原始数据及统计数据功能,能帮助您分析及细分市场。它具有的多货币及多语言灵活性,为国际化组织带来突出的优势。 3. 采购分类帐 Scala的采购分类帐模块为您提供了全面的供应商信息及付款信息。它帮助您协调采购及审批作业,为您准备了丰富的付款方式,它简化各种增值税及营业税的会计核算程序,更方便地制作各种法定会计报表。您可单独使用该模块,如与采购管理模块及总分类帐模块共同使用,更能发挥出其强大功效。如果您的业务复杂,采购分类帐的会计核算构面定能将它们轻松解决。 4. 合并 会计核算本身并不是最终目的。总分类帐中的数据需呈报出来。呈报时,可能需转成另一种货币,或需与其他实体的数据合并。也许需用另一种货币的凭证重报凭证(如在高通涨的国家)或按不同的科目表及/或会计年度重报。最后,也许要将数年的经营结果,为了某个特定的呈报目的而合并在一起。 5.采购管理 采购例程有多种使用方法。无论您是何类型的企业,批发、零售还是制造,系统能完全适应您的业务方式。采购计划、订单处理、交货及发票管理功能既可集中也可分散, 未结的采购订单信息自动提供给Scala的各个后勤模块。使您具有一个全面的采购订单计划环境,并有助于您削减整体采购成本。 6. 销售订单 Scala销售订单模块为您提供了销售及后勤的全部功能。通常,销售是您的主要营业收入,销售功能的灵活性和方便性影响着您的竞争性。Scala具有范围广泛的功能,支持销售及分销的各个阶段。由于销售订单模块与库存管理、采购及制造管理模块紧密集成,您可在销售时就能确定制造或采购的明细,以确保按时交货。 7. 销售订单/开发票 Scala销售订单模块为您提供了销售及后勤的全部功能。通常,销售是您的主要营业收入,销售功能的灵活性和方便性影响着您的竞争性。Scala具有范围广泛的功能,支持销售及分销的各个阶段。由于销售订单模块与库存管理、采购及制造管理模块紧密集成,您可在销售时就能确定制造或采购的明细,以确保按时交货。 8. 统计 Scala的统计模块是一个极为有用的分析工具。与其他安装的Scala模块相连,统计模块提供的信息远较其他模块内置的统计功能更详尽。您能定制报表定义、创建模板,以及专用报表,如佣金报表、毛利分析或产品统计。除能打印输出报表外,您还能保存在磁盘上、Excel文件中。统计模块是Scala后勤模块的有益补充。 9. 库存管理 全面地管理您公司的物流状态,从采购到交货,需要出色的管理工具。库存管理模块可单独使用,但如与采购订单及销售订单模块集成使用,则更能发挥它的强大功效。库存管理的主要优点之一是它与各库存物料的大量数据相连。重订水平、安全库存及短缺报告能帮助您有效地管理库存,降低资本投入。库存管理模块也具有序列号及物料清单处理能力。为您提供灵活的批次处理能力、完整的跟踪能力及丰富的呈报能力。 10. 直接开发票 当您需要一种简捷有效的开发票例程时,Scala的直接开发票模块就是您的有力工具。它能方便地创建非库存物料、简单服务、部门间或子公司间的发票。该模块需销售分类帐模块,以使您有效管理付款和其它作业。直接开发票模块与总分类帐集成后,具有10个会计核算构面,让您能事后分析所有数据。直接开发票模块使用方便,并与您的整个商务管理集成为一体。 11. 市场信息 一个高效的销售组织需要出色的市场营销工具。Scala的市场信息模块收集您潜在及未来客户的信息。能为您挖掘新的市场机会,它集成了当前的市场活动信息,客户信息及供应商主文件中的信息。它允许您设计自己的数据库,给予您工作的完全自由。 12. Scala制造流程管理 Scala的制造管理模块是一个制造业资源计划系统(MRP II)。它能满足您对信息的最苛刻要求。它帮助您管理并控制整个制造过程。此外,它还能与财务模块相连。共同创建一个功能强大的集成系统。由于它内置了丰富的功能,整个系统具有极高的灵活性,并能对制造过程中的各个活动提供各自不同的计划和管理方法。Scala的制造管理模块对重复型,以产定销及以销定产型生产过程均适用。该模块支持准时生产、ISO 9000、EDI及CIM。 13. 产品成品核算/实际成本 掌握您的生产成本至关重要。成本核算模块强化了产品加工的成本核算能力和分析潜在的隐含成本能力。成本核算模块是您标准的成本计算工具,以及各订单报价核算的工具。 14. 车间管理 生产能力瓶颈总是制约您产出的因素。生产部门计划功能使您拥有一个有效的资源管理工具。 15. 基础制造数据 基础制造数据能创建并维护物料清单及制造物料的工艺路线。高质量的基础数据是极为重要的,因为这些数据将成为各计算的基础。其质量高低决定着制造计划和管理有效性的高低。 16. 主生产计划 主生产计划的目的是,提前多达一年时间,根据预测和实际销售量对物料和生产能力进行评估和准备。您能选择主生产计划中的产品,且主产计划能评估不同的销售预测,以确定对生产能力和物料的影响。 17. 物料需求计划 物料需求计划可使您调查未来对所购原材料及已加工部件的需求。例如,您能查看完成整个生产计划(主生产计划)、一组客户订单或一个客户的订单的物料需求。 18. 订单计划/生产活动管理 当您在生产资源中对员工、机器和工具作好充分定义后,以及在基础MPC数据中对物料清单作了描述后,您便能充分利用这些资源使其充分发挥作用。生产活动管理有助于计划、跟踪和分析您的加工单, 您能手工输入加工单,或用客户订单创建加工单,或从上层模块输入(比如,需求计划模块)。加工单放发后,其所需物料便被预留,相应生产部门的可用生产能力自动降低。 19.服务管理 人们认为服务是昂贵的。事实上,很多公司通过高效的服务,来自零备件及技术支持的收入高于其实际产品的销售收入。Scala服务管理模块为您提供了管理服务活动的全新境界,包括对物料及资源的完全管理。Scala服务管理模块能管理上百名的技术服务人员,他们可以是分处不同地点(对于提供现场服务的公司)也可以是在室内提供服务与技术支持。有了Scala的服务管理模块,您便能计划和跟踪各项服务活动。如与Scala的其他模块集成使用,系统将更加灵活,并为您提供更大的发展空间。 20. 项目管理 在当今以客户为导向的世界中,许多销售活动已成为一个个项目。一套系统设施需要大量的材料及人力来完成。有些设备的交付需要协调分包商和设计公司。即使内部活动,例如改建仓库也是一个项目。如果您的业务充满了各种项目,将由谁控制预算,又将由谁跟踪呢?Scala的项目管理模块是您的集成化工具,它能评估、预算、计划资源和跟踪项目。其灵活的四层结构能帮助您随时控制项目的进程,集中精力解决有问题的地方。 21. 人事薪资 人事薪资模块适用于薪资计算周期中的各个阶段,包括雇员的录用与辞退、输入或导入的计时单、根据不同的雇佣类型及不同的支付形式计算雇员的工资单、 打印工资单、生成会计报表、税务报表、人力资源报表、审记表及各种管理日报表并自动创建总分类帐凭证。 22. Signature Signature是我们实施Scala软件的方法。它建立在团队精神之上。它是我们在各行业、在世界各国实施众多项目的知识和经验结晶。Signature提供的标准工具和方法,能确保成功地实施系统。如您采用Scala软件及我们的系统实施方法Signature,您能在数月内拥有一个可运行的全集成的商务管理系统。明确的共同目标 - 使新系统平稳地过渡是任何一个多用户系统的基本前提。利用Signature,我们训练有素的顾问将在实施过程中一步一步地指导您。
大数据scala是什么
Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。你可以使用Scala编写出更加精简的程序,也能用于构建大型复杂系统,还可以访问任何Java类库并且与Java框架进行交互。在大数据当中,Scala是非常重要的一门编程语言,主流的Spark,Kafka,Flink框架都是Scala编程的。
Scala 是一门怎样的语言,具有哪些优势
曾经有人问Java的创始人高斯林这样一个问题,“除了Java语言以外,您现在还使用JVM平台上的哪种编程语言?”他毫不犹豫的说是Scala。 Scala到底是什么?在目前众多的JVM语言当中,Scala无疑是最引人注意的语言之一。Scala是一个静态语言,更适合大型工程项目,Scala直接编译成Java字节码,性能接近Java。Scala是一个多范式的语言,你可以混合使用函数式和面向对象编程,混合使用可变类和不变类,混合使用Actor和传统的Java并发库。 短短一个月的时间,Scala于本月冲进了TIOBE的前五十名。一个 Twitter 的开发人员说过,Scala 将会成为现代 Web2.0 的发起语言。LinkedIn 也用这种语言。同样许多其他大的公司如 Sony Picture, EDF, SAP 也开始使用这种语言。为什么Scala发展这么迅猛,可以获得如此热烈的社区支持。 曾冠东还表示,Scala不是Java的杀手,它无法取代Java的地位,也突破不了JVM的限制、Java实现不了的功能它也实现不了。我们可以将Scala形象的理解成大量语法糖的Java。 Scala 开发团队发布了最新的2.9.2稳定版本,Scala 语言的特性有许多,例如高阶函数和对象、抽象类型绑定,actor 使得函数在 Scala 中能是一个子类成为可能,Scala 中的设计模式使得面向对象和函数编程无缝结合。Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。它已经成功运用在电信行业。Spark 是一种可扩展的数据分析平台,它整合了内存计算的基元,因此,相对于 Hadoop 的集群存储方法,它在性能方面更具优势。Spark 是在 Scala 语言中实现的,并且利用了该语言,为数据处理提供了独一无二的环境。Scala 编译器可以生成字节码,直接运行在使用JVM上。该语言(它实际上代表了可扩展语言)被定义为可直接集成到语言中的简单扩展。 Scala作为一门静态语言,它的主要特性有哪些? · Scala是面向对象的 Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象。对象的类型和行为是由class和trait来描述的。Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。 · Scala是函数式的 Scala还是一个函数式语言,在某种意义上来讲所有函数都是数值。Scala为定义匿名函数提供了一种轻量级的语法,它支持高阶(higher-order)函数、允许函数嵌套、支持局部套用(currying)。Scala的case类及其内置支持的模式匹配模型代数类型在许多函数式编程语言中都被使用。 · Scala是静态类型的 Scala配备了一套富有表现力的类型系统,该抽象概念以一种安全的和一致的方式被使用。 · Scala是可扩展的 Scala的设计承认了实践事实,领域特定应用开发通常需要领域特定语言扩展。Scala提供了一个独特的语言组合机制,这可以更加容易地以类库的形式增加新的语言结构: 任何方式可以被用作中缀(infix)或后缀(postfix)操作符闭包按照所期望的类型(目标类型)自动地被构造 两者结合使用可方便地定义新语句,无需扩展语法,也无需使用类似宏的元编程工具。 · Scala可与Java和.NET进行互操作 Scala设计时就考虑了与流行编程环境良好交互,如Java 2运行时环境(JRE)和 .NET框架(CLR)。特别是与主流面向对象语言,如Java和C#尽量无缝交互。Scala有像Java和C#一样的编译模型(独立编译,动态装载类),允许访问成千上万的高质量类库。 在并发性方面,与 Scala 在 .NET 领域中的姐妹语言 F# 相似,Scala 是针对 “并发性问题” 的解决方案之一,让开发人员能够更加轻松地专注于问题的实质,而不用考虑并发编程的低级细节。Actor 编程模式让高度并行应用程序的开发更加简单。Scala把Erlang风格的基于actor的并发带进了JVM。我们可以利用Scala的actor模型在JVM上设计具伸缩性的并发应用程序,以自动获得多核心处理器带来的优势,而不必依照复杂的Java线程模型来编写程序。Scala 为并发性提供了两种级别的支持,这与其他与 Java 相关的主题极为类似: 首先,对底层库的完全访问(比如说 java.util.concurrent)以及对 “传统” Java 并发性语义的支持(比如说监控程序和wait()/notifyAll())。其次,这些基本机制上面有一个抽象层 Scala 提供了在稳定的高性能平台(Java 虚拟机)上生成的能力同时也是一门敏捷性语言。这一类型的语言也有其他的选择,例如 Jython, JRuby, Groovy 和 Clojure, 但是这些都是运行在 JVM 上的动态类型语言。Open Class 的效果让大家会觉得Scala是动态语言,但它是选择隐式转换来实现的,这也正好证明了Scala是静态语言。隐式转换(Implicit conversion)使 Scala 具有类型安全性,正如扩展方法(extension method)之于 C#,开放类(open class)之于 ruby。即:向未曾定义的类型添加方法(如字符串、列表、整数)。这是使得 Scala 符合 DSL(特定领域语言)模型的特性之一。 Scala结合了面向对象和函数编程的优势,函数编程的一个好处就是你能够像运用一个数据那样运用函数,可以用来定义真正高层级的库,或者去定义新的领域特殊语言(DSL)。 在谈及Java与Scala的对比时,曾冠东表示,Scala能调用绝大部分的Java,而Java调用Scala独有的东西会比较难。Java 拥有非常强的概念规范,因此任何一个 Java 程序之间具有非常多的相似之处,并且这样能够方便的进行程序员交替。但是 Scala 并没有这样的统一性,因为这是一门很有表现力的语言。现场曾冠东为我们演示了实际案例,如下图所示: 正所谓,金无足赤,人无完人。Scala对二进制不兼容,语法也越来越复杂,不能突破Bytecode的限制、编译速度有所缓慢。当它被广泛用于单元测试、开发工具、Socket开发、以及面对多核挑战的并发应用。总而言之,Scala是一种函数式面向对象语言,它融汇了许多前所未有的特性,而同时又运行于JVM之上。正如JRuby 创建者之一Charles Nutter 所宣称的那样Scala就是 Java 王位的合法继承人。随着开发者对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为广大软件工程师手上一件必不可少的工具。更多精彩内容,请关注专题:http://www.it168.com/remen/qcon/
编程语言scala有哪些特点
Scala有交互式命令行(REPL), 可以在上面快速的试各种语法和代码。这对学习新特性,或者实验新想法非常有用。(第1章)一致性: 尽管Scala融合了静态类型系统、面向对象、函数式编程等语言特性,但却很少能看出融合的痕迹。Scala是我见到融合最多语言特性而又不显得杂乱的编程语言之一。类型安全:Scala创始人是教授,他先带领创建了Java 5编译器,而后觉得Java有太多羁绊而发明了Scala。 Scala编译器和类型系统非常强大,它的目标是尽量把软件错误消灭在编写过程中。 Scala类型系统是图灵完备的,甚至可以在编译期间解决问题。面向对象: Scala是面向对象的编程语言,所有的变量和方法都封装在对象中,可以把信息封装起来供外部使用。(第2章)函数式编程:Scala同时又是函数式编程语言,函数可以独立存在,可以定义一个函数作为另一个函数的返回值,也可以接受函数作为函数的参数。这给组合函数带来了很大的便利。如何把面向对象编程形容成搭积木的话,函数式编程就像拼线条,更灵活和更有创意。(第3章)异步编程: 由于函数式编程提倡变量不可变,使异步编程变得非常容易。同时Scala提供的Future(第5章), 和akka类库(第9-11章),使得异步编程变得非常容易。基于JVM: Scala会被编译成为jvm bytecode,所以Scala能无缝集成已有的Java类库。你可以非常自然的使用已经存在的非常庞大且稳定的Java类库,比如小巧好用的apache.common.*, 或者Java上的各种工具类库。因为如此众多特性,用Scala可以优雅地编写简洁的代码,同时又能减少很多低级错误;能快速进行开发,又能保证系统性能、团队协作和长期维护。
Scala 在大数据处理方面有何优势
Scala是什么呢?和我们所熟知的Java语言一样,它也是一门编程语言。了解过大数据的朋友都应该听说过Spark框架,那么Spark的源码就是用Scala来写的。所以,如果我们要学习Spark,首先要熟悉Scala的语法。并且,如果我们Scala掌握的很好,那么就可以研究Spark源码了,这是多么令人激动的一件事情呢。这篇文章中,我们先来了解下Scala的特点吧。1. 与Java的无缝整合Scala也是运行在JVM上,所以可以和Java无缝整合。Scala可以在任何地方,调用Java类或接口中的方法。2. 类型推断熟悉Java的朋友都知道,Java中有8种基本数据类型:byte、short、int、long、float、double、boolean、char。并且,声明变量时都需要指明类型。而在Scala中,声明变量都是用var或val声明,不用指明具体的类型。变量的类型会根据所赋值的数据类型自动推断。在Scala中,不仅变量的类型可以自动推断,方法的返回值类型大部分情况下也是可以省略的。这些都使得Scala更加灵活和简约。在Scala中推尚的就是简约,能省则省。如果您深入学习Scala,就会对这一点有更深的体会哦!3. 并发和分布式Scala天生就是并发和分布式的。Scala集合上可以使用数据并行操作。Scala中的Actor可以实现类似于多线程的功能,同时又没有多线程的并发问题。4. 特质(TRAITS)Scala中的特质类似于Java中的接口,但是功能比接口功能更强大。简单来说,大家可以把特质理解为Java中接口和抽象类的结合体。5. 模式匹配Java中的switch语句,大家都应该很熟悉,可以做常量数据的匹配。而Scala中的模式匹配,功能要强大的多哦,它不仅可以匹配常量,还可以匹配各种数据类型。6. 高阶函数提到Scala,我们就不能不说说它的高阶函数了。Scala的一个最大特性是面向对象,另一大特性就是面向函数了。函数在Scala中是一等公民,是可以独立存在的。并且,这里的函数不仅可以是普通的函数,还可以是高阶函数。那么什么是高阶函数呢?简单来说,就是如果我们把函数理解为一种数据类型,那么在这里,函数是可以作为另一个函数的参数来传递或者作为其他函数的返回值返回,这就是高阶函数。
如何学好Scala
Spark也是基于JVM,我们构筑分布式系统,借助JVM,而不一定是Java语言。 Spark和消息中间件KAFKA等都是用Scala编写的,学好Scala是掌握Spark的关键。Scala基础语法入门实战首先,参照相关攻略,在Linux下分别下载安装Java、Scala,然后配置Java和Scala环境变量。安装完毕,在终端敲入scala即可进入Scala命令行,如下所示:root@Master:~# scalaWelcome to Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_66).Type in expressions to have them evaluated.Type :help for more information.简单测试scala》 1+2res0: Int = 3scala》 1.5*2res1: Double = 3.0scala》 3*res1res2: Double = 9.0//按Tab键,命令自动补全scala》 res2.to toByte toChar toDouble toFloat toInt toLong toShort toString变量var声明可变变量;val声明不可变变量。val声明的不可变变量,不希望数据被改变,RDD内部的数据都是不可变,所以在Spark中一般都是使用val。//下面声明了一个不可变变量result,result的值不可改变。scala》 val result=2+10result: Int = 12//假若修改result的值,会提示出错,如下:scala》 result=13《console》:8: error: reassignment to valresult=13//var声明可变变量:scala》 var name=“Spark“name: String = Sparkscala》 name=“Scala“ //可以修改变量name的值name: String = Scalascala》 name //name的值现在为Scalares4: String = Scala//val声明不可变变量//age被声明为Int类型的不可变变量scala》 val age: Int=0age: Int = 0//声明为String类型scala》 val name:String=nullname: String = null一行代码声明多个变量scala》 val age1,age2,age3=0age1: Int = 0age2: Int = 0age3: Int = 0基本数据类型的自动转换操作Scala自己可以完成基本数据类型的自动转换操作。//输入整数10,按Tab键盘,可以看见它本身的很多方法:scala》 10.totoByte toChar toDouble toFloat toInt toLong toShort toStringscala》 10.toStringres5: String = 10scala》 0.to(5)res6: scala.collection.immutable.Range.Inclusive = Range(0, 1, 2, 3, 4, 5)给了我们一个不可变的集合,获得的结果是:0~5,所以Scala一切皆对象!Scala隐私转换:当类型本身没有没有这个方法,但是又需要调用这个方法时,内部就会自动触发隐式转换。刚才的示例中,Int本身没有to这样的方法,Scala引擎内部会隐式自动转换成RichInt,就像上面0.to(5)这样的调用,RichInt对象类型才有to这样的函数。scala》 1+1res7: Int = 2//因为Scala一切皆对象,所以以上示例又可以写成:scala》 1.+(1)res9: Double = 2.0这个示例,内部其实就是Int的一个隐式转换,+是类的一个方法。Scala没有++、---操作运算:scala》 var age=10age: Int = 10// Scala没有++、---操作运算scala》 age++《console》:9: error: value ++ is not a member of Intage++^//但是++运算可以用下面方式实现:scala》 age +=1scala》 ageres12: Int = 11求最大、最小值scala》 min(20,4)《console》:8: error: not found: value minmin(20,4)^该示例因为没有导入库,所以出错。scala》 import scala.math._ //导入math库import scala.math._scala》 min(20,4)res14: Int = 4apply工厂构造实现方法在Spark中,大量的实例的构造都是使用了apply方式。scala》 Array(1,2,3,4)res15: Array[Int] = Array(1, 2, 3, 4)scala》 val array=Array(1,2,3,4)array: Array[Int] = Array(1, 2, 3, 4)//array是一个声明整数类型的数组变量, 其实内部是自动调用了Array.apply方法,等同如下:scala》 val array = Array.apply(1,2,3,4)array: Array[Int] = Array(1, 2, 3, 4)条件控制、循环// if表达式示例:scala》 if(age》=18) “成年人“ else “小孩“res16: String = 成年人scala》 val result=if(age》=18) “成年人“ else “小孩“result: String = 成年人scala》 resultres17: String = 成年人scala》 val result = if(age》=18){| “adult“| buffered=10| buffered| }以上一个代码块,代码块后面有个返回值buffered,代码块的返回值就是最后一行的值。 打印值scala》 println(“Spark“) //输出一行字符串并换行Sparkscala》 println(“\nSpark“) //换行,输出一行字符串再换行。\n是换行转义符。Sparkscala》 print(“Spark“) //输出一行字符串,不换行Sparkscala》填充占位符scala》 printf(“%s是大数据框架的未来“, “Spark“) //%s是占位符Spark是大数据框架的未来读取内容readLine用于读取输入的内容scala》 readLine //此时敲入Scala之后,然后回车res28: String = Scalascala》 res28res29: String = Scala补充说明,readLine是一个方法,如果方法如果没有参数,那么可以不带括号,readLine()跟readLine效果一样。循环//声明一个可变变量,初始值为100scala》 var element=100 element: Int = 100//while循环示例:scala》 while(element》90){| println(element)| element -= 1| }100999897969594939291scala》 0 to elementres32: scala.collection.immutable.Range.Inclusive = Range(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90)//for循环遍历并打印scala》 for(i《-80 to element) println(i) 8081828384858687888990//循环并增加条件判断scala》 for(i《-0 to element if i%2==0) print(i+“ “) 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90//for循环,并break退出scala》 import scala.util.control.Breaks._ //添加break引用import scala.util.control.Breaks._scala》 for(i《-1 to 10){| if(i==4) break| println(i)| }123scala.util.control.BreakControl//循环,并returnscala》 val n=5n: Int = 5scala》 def f1:Any = {| for(i 《-1 to 10){| if(i==n) return i| println(i)| }| }f1: Anyscala》 f11234res1: Any = 5解释以上代码块,def是定义一个函数。f1就是一个函数。二、 Scala函数入门实战函数示例函数的定义使用def关键字,并且函数体最后有返回值。//声明了一个函数f3,两个参数:param1是String类型,param2为Int类型。param2默认值为30,因为有了默认值,那么在调用上可以不传param2。scala》 def f3(param1:String, param2:Int=30) = param1 + param2 f3: (param1: String, param2: Int)String//调用函数f3,传入第一个参数param1值为Spark,没有传入第二个参数,默认为30。scala》 f3(“Spark“) res4: String = Spark30//带名参数调用,即在函数调用时,显示指定参数名,并不按顺序传入。scala》 f3(param2=100, param1=“Scala“)res5: String = Scala100//变长参数, 定义了一个sum函数,参数numbers是变成参数,即传入的Int变量个数不定。在函数体中,对传入的全部Int变量进行循环遍历并累计求和,最后把结果返回。scala》 def sum(numbers: Int*)={var result=0; for(element《-numbers) result +=element; result}sum: (numbers: Int*)Intscala》 sum(1,2,3,4,5,6,7,8,9,10)res1: Int = 55//下面示例是一个非常经典的语法scala》 sum(1 to 10: _*) // _* 表示提取里面的每个元素, 然后作为变长参数传递res3: Int = 55过程没有返回值的函数就是过程。//这是一个函数scala》 def morning(content:String) = “Good“ + contentmorning: (content: String)String//这是一个过程scala》 def morning(content:String) { println( “Good“ + content)}morning: (content: String)Unit
scala的实际应用场景有哪些
scala应用场景:1.大数据,和为spark的shell编程提供了方便!当然,spark也提供了Python,Java,R的Api!2.也拥有数据计算的功能3.提供面向Web服务,可以和Java等相同的spring Web应用等等就不仔细叙述了
ADO.NET ExecuteScalar方法返回的是什么
返回的是一个数据表的第一行的第一个列,如果你在查询表的时候用了某个聚合函数来获得数据,那么这个时候就可以使用executeScalar方法获得这个值