条件表达式: Scala的if else语法结构和Java的一样.只是,Scala的if else表达式有值.这个值就是跟在if或者else后面的表达式的值. 比如: if(x>0) 0 else 1 该表达式的值就是0或者1,详细的依据x值推断. 能够将if else表达式的值赋值给变量: val s=if(x>0) 0 else 1 这个跟例如以下语句一致: if(x>) s=0 else s=1 当然.第一种写法更好,它能够用来初始化一个val(常量),而另外一种s必须是var(变…
控制结构和函数 摘要: 本篇主要学习在Scala中使用条件表达式.循环和函数,你会看到Scala和其他编程语言之间一个根本性的差异.在Java或C++中,我们把表达式(比如3+4)和语句(比如if语句)看做两样不同的东西.表达式有值,而语句执行动作.在Scala中,几乎所有构造出来的语法结构都有值.这个特性使得程序更加精简,也更易读.本篇的要点包括: 1. 表达式有值 2. 块也有值,是它最后一个表达式的值 3. Scala的for循环就像是"增强版"的Java for循环 4. 分号…
简介 在Java或者C++中,我们把表达式和语句看做两种不同的东西.表达式有值,而语句执行动作. 在Scala中,几乎所有构造出来的语法结构都是有值的.这个特性使得程序更加的精简,也更易读. 1.条件表达式 scala> val x = 1 x: Int = 1 scala> val res = if(x == 1) 1 else 0 res: Int = 1 scala> var res = if(x == 1) "hello" else 3 res: Any =…
一.if表达式有值 val s=if(x>0) 1 else -1,相当于Java中x>0?1:-1(不过不拿呢个在?:中插入语句),而且Scala中可以用混合类型(如if (x>0) "Hello" else -1). 注:像 if(x>0) 1这样if语句可能没有输出值,但是在Scala中每个表达式都有值(此时是引入了一个Unit类,写做()[表示“无有用值”的占位符]. REPL中想换行用{},想粘贴输入paste进入粘贴模式,然后Ctrl+D退出. 二.…
控制结构和函数 先看以下简单的一个条件表达式的demo object TestConditional { def main(args: Array[String]): Unit = { // scala的if判断表达式 var x = 1 if (x > 0) x = 10 else x = 20 println(x) } } Scala的if/else语法结构与java一样,如以上代码一样,需要注意的是当else部分缺失了比如:if(x>0) 1,这个if语句没有输出值,但是在Scala中,…
2.scala控制结构.函数.异常处理---小书匠,在线编辑器,MARKDOWN,Evernote,文件版本 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } a:hover, a:active { outline: 0; } a { color: #0088cc; text-decoration: none; } a:hover { c…
条件表达式 在Scala中if/else表达式有值,这个值就是跟在if或else之后的表达式的值.例如: if (x > 0) 1 else -1 上述表达式的值是1或-1,具体是哪一个取决于x的值.你可以将if/else的值赋值给变量: val s = if (x > 0) 1 else -1 这与如下语句的效果一致: if (x > 0) s = 1 else s = -1 以上两个的区别在于:第一个可以用来初始化val:第二种s必须是var. 在Scala中每个表达式都有一个类型.…
在Scala中存在好几个Zip相关的函数,比如zip,zipAll,zipped 以及zipWithIndex等等.我们在代码中也经常看到这样的函数,这篇文章主要介绍一下这些函数的区别以及使用. 1.zip函数将传进来的两个参数中相应位置上的元素组成一个pair数组.如果其中一个参数元素比较长,那么多余的参数会被删掉.看下英文介绍吧: Returns a list formed from this list and another iterable collection by combining…
当程序的代码量增大时,就需要对各功能模块进行分割,这些分割的小模块就是本文中接下来会进行分析的函数.接下来的部分会讲解包括函数嵌套,函数字面量,以及函数值等概念. 一.方法 一会函数一会方法的,是不是有点晕?严格来说,任何方法都是一个函数,只不过我们称呼那些写在类定义中的某个对象拥有的函数成员为方法.例如下面代码中的LongLines对象就定义了两个方法,可以用于打开指定文件名的文件并读取其中的内容,并且将其中一行的长度超过给定值的内容打印出来. object LongLines { // 接收…
所谓的内建控制结构是指编程语言中可以使用的一些代码控制语法,如Scala中的if, while, for, try, match, 以及函数调用等.需要注意的是,Scala几乎所有的内建控制结构都会返回一个值,这是由于函数式编程语言被认为是计算值的过程,所以作为函数式编程语言的一个组件,这些内建控制结构也不例外. 如果不好理解函数式编程语言中每一个内建控制结构都会返回一个值这一概念,可以回想一下? :表达式,这个表达式基本上能表明这一概念,作用和if表达式类似,但是会根据条件得到一个分支的值作为…
1. 函数字面量 在 Scala 基础(3)—— 基础类型和基础操作 中提到了函数字面量,这里具体解释函数字面量的语法. 下面展示一个具体的函数字面量,它由三部分组成: (x: Int, y: Int) => x + y 圆括号内部的参数列表 右箭头 函数体 2. 一等函数 一等函数可以说是 Scala 中非常重要的特性. 所谓一等函数,就是使用函数字面量,将其作为值进行传递. 函数字面量会被编译成类,并且在运行时实例化成函数值,做一个简单的类比: 函数字面量 -> 类 函数值 -> 对…
002-Scala函数定义.流程控制.异常处理入门实战 Scala函数定义 语句结束无分号 定义无参函数 def 函数名称(参数名称:参数类型)[:Unit=]{ 函数体 } 老师的代码 我的实际代码 原因是集成开发环境自带的版本为2.11.0 变量 常量(不可变)声明 val 变量声明 var 无参函数的调用也无需加括号() 定义有参有返回值的函数 def 函数名称(参数名称:参数类型...):返回值类型={ 函数体 } 老师代码 注意最后一个是b是本函数的返回值 默认最后一行为返回值 流程控…
package com.dtspark.scala.basics /** * Scala中的基本控制结构有顺序.条件和循环三种方式,这个其它的JVM语言是一致的,但是Scala也有一些高级的流程控制结构类模式匹配: * 在这里我们主要if.for.while等三种控制结构及其企业级最佳实践,并且在最后用Spark源码说明 * */ object ControlStructures { def main(args: Array[String]): Unit = { println("Scala&q…
今天来了解下scala的泛型 先让我们看下这段代码 class Triple[F,S,T](val first:F,val second: S,val third: T) val triple = new Triple("Spark",3,3.1415)        val bigData = new Triple[String,String,Char]("Spark","Hadoop",'R')        def getData[T](l…
在调试scala在线开发教程(http://www.imobilebbs.com/wordpress/archives/4911)的过程中看到了以下代码,但是这段代码无论怎么调试都无法成功. abstract class Element{ def contents:Array[String] val height:Int = contents.length val width:Int = if(height==0) 0 else contents(0).length } class Unifor…
函数是Scala的第一公民! 1  基本定义 scala> def max(x: Int, y: Int): Int = { if (x > y) x else y } 跟着是括号里带有冒号分隔的参数列表. 每个函数参数后面必须带前缀冒号的类型标注,因为Scala编译器(还有解释器,但之后我 们将只说编译器)没办法推断函数参数类型. 在max参数列表的括号之后你会看到另一个“: Int”类型标注.这个东西定义了max函数的结果类型:result type(通常可以省略,因为可以推断).跟在函数…
定义一个函数: scala> def foo(x:Int)=x*2 foo: (x: Int)Int 可以采用匿名参数: scala> def foo:((Int)=>Int) = _*2 foo: Int => Int 这个函数的类型是Int=>Int: scala> var bar = foo _ bar: Int => Int = <function1> scala> var bar:(Int)=>Int = foo bar: Int…
知识点: 1.条件表达式 if(x>0) 1 else 0 scala每个表达式都有一个类型,如果一致则为它们的类型,如果为混合类型表达式,则为它们的公共超类型Any. if(x>0) 1 可能没有输出值,在scala中,每个表达式都应该有某种值,引入Unit类,写作(). if(x>0) 1 等同于 if(x>0) 1 else () 2. 语句终止,如果在写较长的语句,需要分两行来写的话,就要确保第一行以一个不能用作语句结尾的符号结尾,通常用操作符. 3.块表达式和赋值,块中最…
Scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言. scala命令行窗口,我们称之为REPL,是指:Read->Evaluate->Print->Loop,也称之为交互式解释器.类似于MySQL的默认客户端工具在命令行窗口中输入scala指令代码时,解释器 会读取指令代码并计算(Evaluation)对应的值,然后将结果打印(Print)出来,接着循环等待用户输入r指令(Loop). 从技术上讲,这里其实并不是一个解释…
目录 4.1 控制结构 4.1.1 条件分支 4.1.2 循环 4.2 异常处理 4.2.1 捕获与产生异常 4.2.2 自定义异常 4.3 自定义函数 Tips 参数默认值为可变时 危险 4.3.1 名称与Docstrings 4.3.2 参数与参数拆分 4.3.3 存取全局范围的变量 global 4.3.4 Lambda 函数 4.3.5 断言 assert 练习 4.1 控制结构 4.1.1 条件分支 if ....: suite1 elif ...: suite2 ... elif .…
转自:http://blog.csdn.net/shenxiaoming77/article/details/54835679 通常情况下,函数的参数是传值参数:即参数的值在它被传递给函数之前被确定.但是,如果我们需要编写一个接收参数不希望马上计算,直到调用函数内的表达式才进行真正的计算的函数.对于这种情况,Scala提供按名称参数调用函数. 示例代码如下: 结果: 在代码中,如果定义函数的时候,传入参数不是传入的值,而是传入的参数名称(如代码中使用t: => Long而不是t: Long),在…
1. 一个数字如果为正数,则它的signum为1:如果是负数,则signum为-1:如果是0,则signum为0.编写一个函数来计算这个值. scala> def signum(x:Int):Int = if(x>0)1 else if(x==0) 0 else -1 signum: (x: Int)Int   scala> signum(100) res6: Int = 1   scala> signum(0) res7: Int = 0   scala> signum(-…
前言: 学习Scala时, 顺便翻译一下自己有兴趣的文章. 代码中所有命名都中文化了(不是翻译). 比如原文用的是甜甜圈的例子. 原文: Scala Tutorial - Learn How To Create Implicit Function 简述 本文学习如何创建隐式函数, 以便对几乎任何类型实现扩展方法或函数. 正如其名, Scala设计时就最大化了可扩展性. Scala features tutorial提到用implicit可以方便地实现任何类型的扩展方法或函数. 对之前的教程的包子…
原文地址 本文内容 命令式处理 函数式处理 函数式编程的优势 所有 Java 下一代语言都包括函数式编程结构,让您可以从一个更高的抽象层面来思考问题.然而,语言间术语的不同使得难以看到类似的结构.本期文章将展示常见的函数式编程结构在 Java 下一代语言中的表示方式,指出那些功能在实现细节上的一些细微差别. 当垃圾回收成为主流时,它消除了所有类别的难以调试的问题,使运行时能够为开发人员管理复杂的.容易出错的进程.函数式编程旨在为您编写的算法实现同样的优化,这样您就可以从一个更高的抽象层面开展工作…
1.介绍 Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体. 使用匿名函数后,我们的代码变得更简洁了. 下面的表达式就定义了一个接受一个Int类型输入参数的匿名函数: var add = (x:Int) => x+1 相当于 同样我们可以在匿名函数中定义多个参数: 2.其它例子…
写在前面 众所周知,scala一向宣称自己是面向函数的编程,(java表示不服,我是面向bean的编程!)那什么是函数? 在接触java的时候,有时候用函数来称呼某个method(实在找不出词了),有时候用方法来称呼某个method,虽然method的中文翻译就是“方法”,但对于java来说,方法和函数是等价的,或者说没有函数这个概念. 而对于scala,这两者似乎有一个较为明确的边界. 你会发现满世界的函数,而你却在写方法 Scala 方法&函数 方法 Scala的方法和java可以看成是一样…
版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=332 排版乱?请移步原文获得更好阅读体验 1.scala中的函数 scala是一门面向对象和函数式编程相结合的语言,前面的文章已经讲了类.对象.继承等面向对象特有的语言特性,接下来将关注一下函数式编程的相关知识.在scala中,函数和变量一样,都是scala的一等公民.与函数相关的代码片段如下: scala    7行 //定义一个匿名函数 (x:Int) => 3*x //将函数赋值给一个变量 val fu…
1.定义变量 Scala的变量分为两种,val和var. val跟java的final变量类似,一旦初始化就不能被重新赋值. var类似于java的非final变量,在整个生命周期内var可以被重新赋值. 示例 var  greeting :String = “hello world!”: Scala并不是和java一样在变量名之后给出类型,而是在变量名后,变量名和类型之间用冒号(:)隔开. 我们还可以这样写 var greeting = “hello world!”: 这里并没有声明变量的类型…
x264中重要结构体参数解释http://www.usr.cc/thread-51995-1-3.htmlx264参数设置http://www.usr.cc/thread-51996-1-3.html x264中重要结构体参数解释typedef struct x264_param_t{/* CPU 标志位 */unsigned int cpu;int         i_threads;       /* 并行编码多帧 */int         b_deterministic; /*是否允许非…