浅谈Scala的Class、Object和Apply()方法_Scala

来源:脚本之家  责任编辑:小易  

1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new;2、toString的实现更漂亮;3、默认实现了equals 和hashCode;4、默认是可以序列化的,也就是实现了Serializable;5、自动从scala.Product中继承一些函数;6、case class构造函数的参数是public级别的,我们可以直接访问;7、支持模式匹配;case class最重要的特性应该就是支持模式匹配www.zgxue.com防采集请勿采集本网。

Scala中如果一个Class和一个Object同名,则称Class是Object的伴生类。Scala没有Java的Static修饰符,Object下的成员和方法都是静态的,类似于Java里面加了Static修饰符的成员和方法。Class和Object都可以定义自己的Apply()方法,类名()调用Object下的Apply()方法,变量名()调用Class下的Apply()方法。

1、Scala没有静态方法或者静态字段 2、伴生对象充当于静态方法的类,所以伴生对象中全是静态的 3、scala中的变量有两种var和val(val类似于Java中final,值不可改变) package com.donews.objectBean

class ApplyTest{ def apply() { println("This is a class, apply()...") }}object ApplyTest{ def apply() = { println("This is an object, apply()...") new ApplyTest() }}object ApplyExample { def main(args: Array[String]) { var at=ApplyTest() at() }}

case class data(a:Int,b:String,c:String,d:Int,e:Int) val arr=line.split(\"\\t\") val i=arr.iterator import shapeless._ object readField extends shapeless.Poly0 { implicit def readInt=

运行结果:

一、简单例子:1 abstract class Expr 2 case class Var(name:String)extends Expr 3 case class Number(num:Double)extends Expr 4 case class UnOp(operator:String,arg:Expr)extends Expr 5

分析:

在Scala中存在caseclass,它其实就是一个普通的class。但是它又和普通的class略有区别,如下:1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new;scala>caseclassIteblog

var at=ApplyTest()

Scala中class类对象中不可有静态变量和静态方法,但是提供了“伴侣对象”的功能:在和类的同一个文件中定义同名的Object对象:(须在同一文件中;main方法定义在Object对象中) private[spark]

这是类名(),调用的是Object下的Apply()方法,由于此时并没有创建类的对象,所以也只能调用Object下的静态方法。

new ApplyTest()

创建了一个类的对象,并且返回给了变量at。

at()

这是变量名(),显然调用的是Class的Apply()方法。

以上这篇浅谈Scala的Class、Object和Apply()方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持真格学网。

我感觉原来它也只是通过运行一个java命令来运行一个java程序,其中会把对应的scala依赖的core jar加入classpath,这个java程序最终会调用scala的java程序 MainGenericRunner,这个MainGenericRunner会把scala程序路径作为一个参数内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • scala解析json字符串的实例详解
  • scala小程序详解及实例代码
  • windows7下安装scala 2.9.2教程
  • php警告cannot use a scalar value as an array的解决方法
  • php下关于cannot use a scalar value as an array的解决办法
  • executereader(),executenonquery(),executescalar(),executexmlreader()之间的区别
  • scala中停止循环的三种方式(推荐)
  • scala安装及环境图文配置教程
  • windows7下安装scala 2.9.2教程
  • scala基础简介及代码示例
  • 利用gradle如何构建scala多模块工程的步骤详解
  • 浅谈scala的class、object和apply()方法
  • 为什么Maven的scala项目不能跑scala class程序?
  • Scala class和case class的区别
  • scala class 中的语句是什么时候调用的
  • scala中 object 和 class的区别
  • scala中class和object的区别
  • scala case class 这时候该怎么用
  • scala case class 这时候该怎么用
  • Scala class和case class的区别
  • scala class和object的区别
  • Scala class和case class的区别
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页scala解析json字符串的实例详解scala小程序详解及实例代码windows7下安装scala 2.9.2教程php警告cannot use a scalar value as an array的解决方法php下关于cannot use a scalar value as an array的解决办法executereader(),executenonquery(),executescalar(),executexmlreader()之间的区别scala中停止循环的三种方式(推荐)scala安装及环境图文配置教程windows7下安装scala 2.9.2教程scala基础简介及代码示例利用gradle如何构建scala多模块工程的步骤详解浅谈scala的class、object和apply()方法浅谈scala的class、object和applwindows7下安装scala 2.9.2教程scala安装及环境图文配置教程scala基础简介及代码示例利用gradle如何构建scala多模块工浅谈scala的class、object和apply()方法利用gradle如何构建scala多模块工程的步骤windows7下安装scala 2.9.2教程scala基础简介及代码示例scala安装及环境图文配置教程
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved