【scala】定义变量和函数
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】定义变量和函数的更多相关文章
- Scala基础:定义变量和逻辑判断语句以及方法和函数
定义变量和逻辑判断语句 package com.zy.scala import scala.collection.immutable object ScalaDemo { def main(args: ...
- Scala 基础(1)—— 定义变量 & 定义函数
1. 使用 val & var 定义变量 Scala 中的变量被分为2种:val 和 var.其含义于 Java 中的 final 关键字类似. val 等同于被 final 修饰过的变量, ...
- 第1节 Scala基础语法:5、6、7、8、基础-申明变量和常用类型,表达式,循环,定义方法和函数
4. Scala基础 4.1. 声明变量 package cn.itcast.scala object VariableDemo { def main(args: Array[Strin ...
- jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...
- 【Python基础学习二】定义变量、判断、循环、函数基本语法
先来一个愉快的Hello World吧,就是这么简单,不需要写标点符号,但是需要严格按照缩进关系,Python变量的作用域是靠tab来控制的. print("Hello World" ...
- MFC 如何在一个类中使用在其他类中定义的变量或函数
[声明:本文的知识点来源于网络,参考网址:https://blog.csdn.net/bill_ming/article/details/7407848] [以下三种方法亲测有效,可以根据具体情况来选 ...
- Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)
object func { def main(args:Array[String]):Unit={ //函数赋值给变量时, 必须在函数后面加上空格和下划线. def sayHello(name: St ...
- scala面向对象.高阶函数,柯里化,Actor编程简介
1.定义一个类 class Person{ //用val修饰的变量是只读属性,有getter但是没有setter val id ="111" //用var修饰的变量既有getter ...
- Scala的控制结构和函数
控制结构和函数 先看以下简单的一个条件表达式的demo object TestConditional { def main(args: Array[String]): Unit = { // scal ...
随机推荐
- 安装RabbitMQ3.6.10报错:{error,{missing_dependencies,[crypto,ssl],
参考https://blog.csdn.net/u010739551/article/details/80848993 如果安装上篇博文安装则可避免这种情况 CentOS6.7安装RabbitMQ3. ...
- nodejs升级的两种方法
方法一: 用n升级nodejs # 全局安装n$ npm install -g n# 升级到最新稳定版$ n stable # 升级到最新版$ n latest# 升级到定制版$ n v7.10.0# ...
- Java-idea-创建maven项目,部署项目,部署服务器,简单测试
spring-boot项目创建 1.项目创建 使用Idea,File→Project→Spring initalizr,点击next,进行基本配置.此时 一个spring boot项目创建完成. 之后 ...
- Delphi 正则表达式语法(5): 边界
Delphi 正则表达式语法(5): 边界 // \b 单词边界 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg ...
- netstat 与 telnet
在网络方面我们常常会用到如下命令: (1)ping命令:我们常常用来判断2台或2台以上的机器间是否网络连通. ping 192.168.1.88 -t 如果想看任何命令的参数是什么意思,我们只需要:命 ...
- Spring MVC 了解WebApplicationContext中特殊的bean类型
Spring MVC 了解WebApplicationContext中特殊的bean类型 Spring的DispatcherServlet使用了特殊的bean来处理请求.渲染视图等,这些特定的bean ...
- NIO复习01
NIO 概述: 1. Java NIO 由以下几个核心部分组成:Channels Buffers Selectors 2. 主要Channel的实现:FileChann ...
- vue移动端 滚动 鼠标按下效果
<div class="item" :id="item.RowID" @touchstart="touchstart(item.RowID)&q ...
- Javascript中类型: undefined, number ,string ,object ,boolean
var a1; var a2 = true;var a3 = 1;var a4 = "Hello";var a5 = new Object();var a6 = null;var ...
- 20145109《Java程序设计》第二周学习总结
20145109 <Java程序设计>第二周学习总结 教材学习内容总结 Variable : naming rule : Camel case no default value e.g : ...