scala学习计算开始基本语法1-从今天开始更新

1环境:
window
linux
我的机子的系统ubonto不能用了,就是用window的eclipse for scala来学习。http://scala-ide.org/
环境就不说了。linux上可以使用交互命令行,也可以使用eclipse这种ide,intellij idea比较火,但是内存消耗大。这次就步用了。
今天从scala的基本语法开始。
讲之前,要hello,很多语言学习都这样,我们也不能列外。看下面程序,使用Scala打印”hello!Scala”

package org.wq.learn
object day1 {
  def main(args: Array[String]): Unit = {
    val val1 = "hello!scala"
    println(val1)
  }
 }

第一步:定义函数
scala中定义了两种类型的变量,val和var,val类似与java中的final变量,我们称为常变量,一定设定,值不会变。而var可以随意改变。
使用表达是val val1=”hello!Scala”,表示定义了一字符串常量,类型为String,Scala定义类型的时候,不需要像java那样定义类型,Scala会根据赋值的内容来推出它的类别(推荐),当然你也可以想java那样指明类别。但是格式和java不太一样

val val2:String ="hello!scala"

:表示类型是什么,不需要分号结尾,如果是在命令行操作,分行的话需要“|”。
第二步:定义函数
Scala和Java一样,是面向对象的语言,但是Scala也是面向函数的高级语言,Scala中的函数和类对于Scala说同样重要。下面定义一个函数,函数功能是求两个值之间的最小值:

package org.wq.learn
object day1 {
  def main(args: Array[String]): Unit = {
    val val1 = "hello!scala"
    val val2:String ="hello!scala"
    println(1,3))
  }
  /**
   * 记着这种格式,定义函数要写def,接着写函数名,参数, 返回值
   */
  def min(x1:Int,x2:Int):Int={
    if(x1<x2) return x1
    else 
      return x2
  }
 }

Scala定义函数是以def开头,后面跟函数名,然后逗号分割参数,使用冒号分开返回值。在Scala中变量类型是放在逗号之后的,x1:Int,返回值如果不定义默认为Unit,和java中的void类似。
注意,在Scala中,每个表达式都是有返回值的,和java不一样,比如上面的代码可以改为:

def min(x1:Int,x2:Int):Int={
    if(x1<x2)  x1
    else 
       x2
  }

所以,在返回值中,不必写return,为了简洁在Scala了编程中,最好不要return语句,函数的最后一个表达式的值就是作为函数的返回值返回。
也由于Scala中的不需要返回类型,这种方式叫”type interface”,大多数函数Scala都可以反推其返回值的类型-这句话是书上说的,但是函数调用自身还是要说明类型的。但是在eclipse中,没有返回值会报警告,如下:
这里写图片描述
建议还是写上返回类型,思路会清晰很多。
当然,如果函数中没有返回值,就可以定义,可以不定义返回类型了。如果定义使用Unit,不定义就为NULL,Unit和Java的void很想。一般Unit函数,都会产生副作用,因为在Scala中,我们使用函数是为了得到返回值,期间产生的打印什么的就叫做副作用。

def say(str:String):Unit={
    println(str)
  }

第三步:使用while循环
其实和Java中使用方式是一样的,下面的功能是,打印小于num的数。

def whileUse(num:Int):Unit={
    var i=0
    while(i<num){
      println(i)
      i+=1
    }
  }

值得注意的是,scala中不支持i++,i–,++i等操作的,需要使用i+=1来表示。
说道这里,Scala调用数组是是使用(),而不是使用[],

val strs:Array[String]=Array("aa","ba")
    println(strs(1))

上面的循环不像是Scala的风格,一定要少用var,下面改进下。
第四步:使用foreach和for来代替循环
Scala是面向函数的,更好的方式是用面向函数的方式来实现,改用forearch方式

val strs:Array[String]=Array("aa","ba")
    strs.foreach(str=>println(str))

这是一种通过枚举来实现循环的方式,调用strs的foreach方法,str表示strs中的每一个值,=>表示每一个值都要使用下面这个函数,println(str),整体来说就是把strs中的每一个值都带入到println函数中。
当然也有下面的缩写:

strs.foreach( println)

PS:今天就到这里……今天加班回来晚了,今天的学习内容就到这里了。明天继续……欢迎大家提建议
这套资料是我参照引路蜂写的笔记,再次感谢引路蜂分享的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值