【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 ...
随机推荐
- redis的ruby客户端(三)
1. 介绍 clients这里列出了redis所支持的语言的所有客户端程序,其中就有ruby的.有这么多的客户端,说明要实现redis的客户端是不难的.其实你只要掌握一种语言的socket编程就可以实 ...
- 关于\r和\n的区别
回车和换行来源 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两 ...
- appium之Context切换
原文地址http://blog.csdn.net/Mandypan/article/details/51396302 Context切换driver.getContextHandles();//获取页 ...
- Rest_framework-2
一 版本 二 解析器 三 序列化 四 请求数据验证 一 版本 作用:应用程序的更新迭代(丰富或添加功能),可以通过版本来实现. 1 .没用rest_framework之前,我们可以通过以下方式来获取 ...
- bootstrap select 学习使用笔记-------选中赋值及change监听丢失
在 bootstrap 和 knockout 共同存在下使用 select 下拉选择插件,发现绑定选项.赋值之后插件不可用了,绑定的监听事件也丢失了.迫不得已在绑定选项值之后再次调用刷新,以及赋值后重 ...
- 解决hash冲突的办法
1.开发定址法 2.再哈希法 3.链地址法 4.建立一个公共溢出区
- VMWare 安装时报错 tools-windows.msi failed报错解决办法
1.我用的是7.1.3版本的,到官方网站上下载这个版本的tools安装包 http://softwareupdate.vmware.com/cds/vmw-desktop/ws/7.1.3/32428 ...
- 如何选择单片机和Android-LInux-ARM开发板?
源: 如何选择单片机和Android-LInux-ARM开发板?
- 通过自动回复机器人学Mybatis:原始版本(包括JDBC、pom.xml等)
imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 list.jsp <%@ page contentType="text/ ...
- MySQL-5.7 Update语句详解
1.语法 (1)单表 UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET assignment_list [WHERE where_condition ...