1.定义变量

  Scala的变量分为两种,val和var。

  val跟java的final变量类似,一旦初始化就不能被重新赋值。

  var类似于java的非final变量,在整个生命周期内var可以被重新赋值。

  示例

    var  greeting :String = “hello world!”;

  Scala并不是和java一样在变量名之后给出类型,而是在变量名后,变量名和类型之间用冒号(:)隔开。

  我们还可以这样写

    var greeting = “hello world!”;

  这里并没有声明变量的类型,因为Scala具有类型判断的能力,可以不显式指定类型。

2.定义函数

  函数定义由def开始,然后是函数名和圆括号中以逗号隔开的参数列表。

          函数名          参数列表            返回结果类型

  def    max    (x :Int , y :Int )  :   Int  =  {

    //函数内容

  }

  如果函数只有一条语句,也可以选择不是使用花括号。

    def max (x:Int,y:Int)= if(x<y)x else y

  下面是不接收任何参数也不返回任何有意义的结果的函数

    def greet() = println(“hello world”);

  返回结果是Unit,类似于java中的void,表示该函数并不返回任何由实际意义的结果。

3.函数式编程风格

  Scala允许采用指令式编程,但是鼓励采用函数式编程风格。

  两种编码风格有什么差异呢?

  一个显著性的标志式如果代码包含任何var变量,它通常是指令风格的,比如JAVA C++ C

  而代码完全没有var,只包含了val,那么它可能是函数式的。

  例如

    

def printArgs(args:Array[String]):Unit {
var i = 0;
while(i<args.length){
println(args(i));
i+=1;
}
}
//这个是典型的指令式编程
//我们可以去掉上述代码中的var,转换成函数式编程
def printArgs(args:Array[String]):Unit {
for(arg<-args)
println(arg);
}

  使用函数式编程跟指令式编程相比较,更清晰精简,也更少出错。

  但是Scala并没有强制你去使用函数式风格来编程,Scala式指令式/函数式混合类型的语言。

【scala】定义变量和函数的更多相关文章

  1. Scala基础:定义变量和逻辑判断语句以及方法和函数

    定义变量和逻辑判断语句 package com.zy.scala import scala.collection.immutable object ScalaDemo { def main(args: ...

  2. Scala 基础(1)—— 定义变量 & 定义函数

    1. 使用 val & var 定义变量 Scala 中的变量被分为2种:val 和 var.其含义于 Java 中的 final 关键字类似. val 等同于被 final 修饰过的变量, ...

  3. 第1节 Scala基础语法:5、6、7、8、基础-申明变量和常用类型,表达式,循环,定义方法和函数

    4.    Scala基础 4.1.   声明变量 package cn.itcast.scala object VariableDemo {   def main(args: Array[Strin ...

  4. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

  5. 【Python基础学习二】定义变量、判断、循环、函数基本语法

    先来一个愉快的Hello World吧,就是这么简单,不需要写标点符号,但是需要严格按照缩进关系,Python变量的作用域是靠tab来控制的. print("Hello World" ...

  6. MFC 如何在一个类中使用在其他类中定义的变量或函数

    [声明:本文的知识点来源于网络,参考网址:https://blog.csdn.net/bill_ming/article/details/7407848] [以下三种方法亲测有效,可以根据具体情况来选 ...

  7. Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)

    object func { def main(args:Array[String]):Unit={ //函数赋值给变量时, 必须在函数后面加上空格和下划线. def sayHello(name: St ...

  8. scala面向对象.高阶函数,柯里化,Actor编程简介

    1.定义一个类 class Person{ //用val修饰的变量是只读属性,有getter但是没有setter val id ="111" //用var修饰的变量既有getter ...

  9. Scala的控制结构和函数

    控制结构和函数 先看以下简单的一个条件表达式的demo object TestConditional { def main(args: Array[String]): Unit = { // scal ...

随机推荐

  1. beego——flash数据

    这个flash与 Adobe/Macromedia Flash没有任何关系,它主要用于在两个逻辑间传递临时数据, flash中存放的所有数据会在紧接着的下一个逻辑中调用后清除. 一般用于传递提示和错误 ...

  2. for迭代序列的三种方式

    while循环是条件性的,for循环是迭代性的. for循环会访问所有迭代对象中的所有元素,并在所有条目都结束后结束循环. for循环迭代序列有三种基本的方式,分别是通过序列项迭代.通过索引迭代.通过 ...

  3. maven 不打包hbm 问题

    <build> <resources> <resource> <directory>src/main/java</directory> &l ...

  4. linux 清理cache中的内存

    1. sync 2. sysctl -w vm.drop_caches=1

  5. NIO复习01

    NIO 概述: 1. Java NIO 由以下几个核心部分组成:Channels       Buffers           Selectors 2. 主要Channel的实现:FileChann ...

  6. maven入门学习(一)

    一.maven介绍 1.软件开发中我们为什么要使用maven呢?(纯属个人体会观点,如有错误,敬请指正) (1)其一,企业岗位需求,目前的IT开发招聘岗位上,基本都要求会使用maven.        ...

  7. ubuntu 安装pip

    apt-get install python3-pip

  8. python3爬虫全国地址信息

    PHP方式写的一团糟所以就用python3重写了一遍,所以因为第二次写了,思路也更清晰了些. 提醒:可能会有502的错误,所以做了异常以及数据库事务处理,暂时没有想到更好的优化方法,所以就先这样吧.待 ...

  9. Deep Auto-encoder

    autoencoder可以用于数据压缩.降维,预训练神经网络,生成数据等等. autoencoder的架构 autoencoder的架构是这样的: 需要分别训练一个Encoder和一个Decoder. ...

  10. no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

    1. 使用git克隆项目报错 $ git clone ssh://liuchao@192.168.7.32:29418/platform/Midou Cloning into 'Midou'... U ...