scala-class
object Scala {
def main( args : Array[ String ] ) : Unit =
{
val p = new Point( , );
println( p );
p.move( , );
println( p );
val p2 = new Point
println( p2 )
val p3 = new Point( y = )
println( p3 )
val point4 = new Point2
point4.x =
point4.x_=( );
point4.y = // prints the warning
println( point4 )
/**
*
* <pre>
* Primary constructor parameters with val and var are public.
* However, because vals are immutable,
* you can’t write the following.
* class Point(val x: Int, val y: Int)
* val point = new Point(1, 2)
* point.x = 3 // <-- does not compile
* </pre>
* <pre>
* 首要构造器上参数都是public.如果没有明确写出是var x:Int,默认是val
* val是不可变的,所以如上代码不能通过编译
* </pre>
*/
}
}
class Point( var y : Int = , var x : Int = ) {
def move( dy : Int, dx : Int ) : Unit =
{
this.x = x;
this.y = y;
}
override def toString() : String =
s"($x,$y)"
}
class Point2 {
private var _x = ;
private var _y = ;
private var bound = ;
//define method x for access _x
def x = _x;
/**
* <pre>
* def x_= and def y_= are for validating and setting
* the value of _x and _y.
* Notice the special syntax for the setters:
* the method has _= appended to the identifier of the
* getter and the parameters come after
* </pre>
* <pre>
* def x_=和def y_=为了检验设置的值.注意setters方法上特殊的语法.
* </pre>
*/
def x_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
//define method y for access _y
def y = _y;
def y_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
private def printWarning = println( "WARNING: Out of bounds" );
override def toString() : String =
s"($x,$y)"
}
下面这份代码更能说明class的setter和getter
object Scala {
def main( args : Array[ String ] ) : Unit =
{
val point4 = new Point
point4.xx =
point4.y = // prints the warning
println( point4 )
}
}
class Point {
private var _x = ;
private var _y = ;
private var bound = ;
//define method x for access _x
def xx = _x;
/**
* <pre>
* def x_= and def y_= are for validating and setting
* the value of _x and _y.
* Notice the special syntax for the setters:
* the method has _= appended to the identifier of the
* getter and the parameters come after
* </pre>
* <pre>
* def x_=和def y_=为了检验设置的值.注意setters方法上特殊的语法.
* </pre>
*/
def xx_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
//define method y for access _y
def y = _y;
def y_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
private def printWarning = println( "WARNING: Out of bounds" );
override def toString() : String =
s"($xx,$y)"
}
多个构造函数
object Scala {
def main( args : Array[ String ] ) : Unit =
{
val point4 = new Point
point4.xx =
point4.y = // prints the warning
println( point4 )
val point5 = new Point( )
point5.y = // prints the warning
println( point5 )
}
}
class Point {
private var _x = ;
private var ny = ;
private var bound = ;
def this( xxx : Int ) {
this()
xx = xxx;
println("here")
}
//define method x for access _x
def xx = _x;
/**
* <pre>
* def x_= and def y_= are for validating and setting
* the value of _x and _y.
* Notice the special syntax for the setters:
* the method has _= appended to the identifier of the
* getter and the parameters come after
* </pre>
* <pre>
* def x_=和def y_=为了检验设置的值.注意setters方法上特殊的语法.
* </pre>
*/
def xx_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
//define method y for access _y
def y = ny;
def y_=( newValue : Int ) : Unit =
{
if ( newValue < bound )
_x = newValue
else
printWarning
}
private def printWarning = println( "WARNING: Out of bounds" );
override def toString() : String =
s"($xx,$y)"
}
scala-class的更多相关文章
- jdb调试scala代码的简单介绍
在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...
- scala练习题1 基础知识
1, 在scala REPL中输入3. 然后按下tab键,有哪些方法可以被调用? 24个方法可以被调用, 8个基本类型: 基本的操作符, 等: 2,在scala REPL中,计算3的平方根,然 ...
- 牛顿法求平方根 scala
你任说1个整数x,我任猜它的平方根为y,如果不对或精度不够准确,那我令y = (y+x/y)/2.如此循环反复下去,y就会无限逼近x的平方根.scala代码牛顿智商太高了println( sqr(10 ...
- Scala集合和Java集合对应转换关系
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...
- Scala化规则引擎
1. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...
- Scala快速概览
IDEA工具安装及scala基本操作 目录 一. 1. 2. 3. 4. 二. 1. 2. 3. 三. 1. 2. 3. 4. 5. 6. 7. 四. 1. (1) (2) (3) (4) (5) ( ...
- Scala Macros - scalamela 1.x,inline-meta annotations
在上期讨论中我们介绍了Scala Macros,它可以说是工具库编程人员不可或缺的编程手段,可以实现编译器在编译源代码时对源代码进行的修改.扩展和替换,如此可以对用户屏蔽工具库复杂的内部细节,使他们可 ...
- Scala Macros - 元编程 Metaprogramming with Def Macros
Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为S ...
- Scala Reflection - Mirrors,ClassTag,TypeTag and WeakTypeTag
反射reflection是程序对自身的检查.验证甚至代码修改功能.反射可以通过它的Reify功能来实时自动构建生成静态的Scala实例如:类(class).方法(method).表达式(express ...
- Scala For Java的一些参考
变量 String yourPast = "Good Java Programmer"; val yourPast : String = "Good Java ...
随机推荐
- Linux Docker安装Jenkins
安装环境 操作系统 centos7.3 安装Docker,安装及配置见 <Docker之Docker介绍及安装配置> 安装Jenkins 下载Jenkins 命令:sudo docker ...
- python3学习笔记二(注释、缩进)
注释 单行注释,用#开头即可 多行注释,用''' ''' 或""" """ 缩进 python不能像其他语言一样采用{}或者begin... ...
- AWS机器学习初探(1):Comprehend - 自然语言处理服务
AWS机器学习初探(1):Comprehend - 自然语言处理服务 1. Comprehend 服务简介 1.1 功能 Amazon Comprehend 服务利用自然语言处理(NLP)来分析文本. ...
- 云中树莓派(5):利用 AWS IoT Greengrass 进行 IoT 边缘计算
云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...
- 让android程序根据重力感应旋转屏幕(支持4个方向旋转)
原文地址:http://blog.csdn.net/yixiaoqingyuz/article/details/6453798代码如下: ChangeOrientationHandler.java p ...
- SCCM 2012 R2实战系列之一:SQL安装
大家好,从今天开始跟大家一起分享自己学习SCCM 2012 R2的一些心得和具体的部署配置,希望能帮到大家.由于SCCM部署的步骤比较复杂,内容也比较多,所以我把SCCM整个部署过程分为以下三个章节: ...
- 4G模块*99#拨号上网
操作系统:win10 模块型号:quectel EC20 CE FAG 4G模块拨号步骤如下: 1. 打开网络和internet设置 2. 选择“拨号” 3. 选择“设置新连接” 4. 选择“拨号调至 ...
- 舞蹈链(DLX)
舞蹈链(DLX) Tags:搜索 作业部落 评论地址 一.概述 特别特别感谢这位童鞋His blog 舞蹈链是一种优美的搜索,就像下面这样跳舞- 舞蹈链用于解决精确覆盖或者重复覆盖的问题 你可以想象成 ...
- Windows使用Idea编译spark源码
1. 环境准备 JDK1.8 Scala2.11.8 Maven 3.3+ IDEA with scala plugin 2. 下载spark源码 下载地址 https://archive.apach ...
- cocos子节点转父节点坐标 原理浅析(局部坐标转世界坐标同理)
在CCNode的类中,有一个得到 一个节点坐标系转换父亲坐标系的一个矩阵,节点内坐标乘以这个矩阵,就可以转换为在节点父节点中的坐标,方法名为: Mat4& Node::getNodeToPar ...