scala讲解---变量,函数
2016-05-05 21:27
267 查看
第一份代码
</pre><pre name="code" class="plain">object testprogram { //val a = "jfkd" //定义变量用var //main函数要定义在object里面 def hello(a: String = "woshi"): String = { //给出默认值,调用时可以不赋值,但是括号不能省略 "hello" + a; //最后一行默认为返回值 } def hellscala() { //不给函数写返回值则默认void型 println("zhende") } val add = (x: Int, y: Int) => x + y //匿名函数,=>是分隔符,后面的是block快,可以赋给常量 def print(a: String*) = a.foreach { x => println(x) } def add2(x: Int)(y: Int): Int = x + y //柯里化,可以只传一个参数,这样返回的还是一个函数不过第一个值被定义了 def main(args: Array[String]) { //println("nihao") //println(hello("wobushuang")); hellscala(); //println(add(1,2)) //println(add2(1)(2)) print("nihao", "buhao", "woshi", "sh"); hello(); val x = 5 val a = if (x > 0) 1 else 0; // var(n, r)=(10,0); //可以通过这种形式为多个变量赋值 // while (n > 0) { // r = r + n; // n = n - 1; // } for(i <- 1 to 10){ //a.b("xxx") === a b "xxx" until比to少算一次 println(i);} for(i <- 1 to 10 if i % 2 ==0){ //支持这种格式记住了 println(i) } } }
</pre><pre name="code" class="plain">
</pre><pre name="code" class="plain">第二个程序
<pre name="code" class="plain"> class testprogram2 { } /*class Person{ //都是public级别 //会生成getter和setter方法 var name : String = _; //表示给你定义了,但是不给你初始值 //只会生成getter方法 val age = 10; private[this] val gender = "male" //这么定义表示只能够在类中使用,就算你是他的一个实例也无法使用 }*/ //1.主构造器直接跟在类名后面,主构造器中的参数,最后会被编译成字段 //2.主构造器执行的时候,会执行类中所有语句(不在方法中的) //3.假设参数声明时不带val和var,那么相当于private[this] !!! class person2(val name : String, val age : Int){ //参数直接跟在类名后面的就称为主构造器 println("zheshiyigebuhuizhixing") var work : String = _ val book : String = "buhao" //1.附属构造器名称为this //2.每一个附属构造器必须首先调用已经存在的子构造器或者附属构造器 def this(name : String, age : Int, work : String){ this(name, age) this.work = work } } class Student(name : String, age : Int ,val major : String) extends person2(name, age){ //记住这种格式,父类有的参数不需要加val或者var println("this is a student of person major is :" + major) override def toString = "overrid" override val book : String = "nihao" //要有override关键字 } object testprogram2{ def main(args : Array[String]){ // val p = new person2("zyj", 2, "student") //没有构造函数的话括号可以省略 // p.name = "jack" // println(p.name + ":" + p.age) val s = new Student("zyj", 10, "student") // println(s.toString()) println(s.book) } }
相关文章推荐
- 设置python 模块调用路径
- JS和AS交互
- 周总结<3>
- 机器学习初步与微积分概率论-七月算法(julyedu.com)4 月机器学习算法班学习笔记
- hdoj-2717-Catch That Cow
- php查询技术之-关键词高亮显示
- 判定表
- ajax+FormData+javascript 实现无刷新上传附件
- 正则表达式学习笔记 之 group()和group(i)的区别
- 01智力题
- HDOJ(HDU) 2201 熊猫阿波的故事(概率问题)
- zoj3279 ants 线段树
- 《Windows核心编程》---Interlocked原子访问系列函数
- AsyncTask输入参数
- HDOJ(HDU) 2201 熊猫阿波的故事(概率问题)
- 学习android笔记(1):隐藏系统自定义titleBar
- Objective-C的appendString,appendFormat 用法
- Java之int与Integer区别
- Latex 学习
- 访问控制符