设为首页 加入收藏

TOP

Scala(二)
2023-07-23 13:24:52 】 浏览:594
Tags:Scala
程序语句的集合,类中定义的函数称之为方法。下面是方法的一个实例。

object add{
   def addInt( a:Int, b:Int ) : Int = {
      var sum:Int = 0
      sum = a + b

      return sum
   }
}

可变参数:我们不需要指定函数参数的个数,可以向函数传入可变长度参数列表。通过在参数的类型之后放一个星号来设置可变参数(可重复的参数)。

object Test {
   def main(args: Array[String]) {
        printStrings("Runoob", "Scala", "Python");
   }
   def printStrings( args:String* ) = {
      var i : Int = 0;
      for( arg <- args ){
         println("Arg value[" + i + "] = " + arg );
         i = i + 1;
      }
   }
}

默认参数: scala可以为函数参数指定默认参数值,使用了默认参数,你在调用函数的过程中可以不需要传递参数,这时函数就会调用它的默认参数值,如果传递了参数,则传递值会取代默认值。

object Test {
   def main(args: Array[String]) {
        println( "返回值 : " + addInt() );
   }
   def addInt( a:Int=5, b:Int=7 ) : Int = {
      var sum:Int = 0
      sum = a + b

      return sum
   }
}

匿名函数:箭头左边是参数列表,右边是函数体。

var inc = (x: Int) => {x+1}
var x = inc(7) - 1

//定义一个函数,以函数作为参数输入
def f(func: String => Unit): Unit = {
    func("gyt")
}
var fun = (name: String) => {println(name)}
f(fun)

传名调用:传递的不是具体的值,而是代码块。和一般的传值调用相比,每次使用传名调用时,解释器都会计算一次表达式的值。

def f1(): Int = {
    println("f1被调用")
    12
}
def f2(a: => Int): Unit = {
    println(a)
    println(a)
}
f2(f1())

至简原则

(1)函数中的return可以省略,以最后一行代码作为代码块的返回值。

def f1(name: String): String = {
    name
}

(2)如果函数体只有一行代码,可以省略花括号。

def f2(name: String): String = name

(3)如果编译器可以推断出来返回值,那么可以省略(:和返回值类型一起省略)。有意思的是,到这一步,scala函数的形式形如数学中的f(x) = y。

def f3(name: String) = name

(4)如果有return,则(3)不适用。

(5)如果返回值是Unit,可以省略等号和返回值,但是此时花括号不能省略。

def f4(name: String) {
    println(name)
}

(6)如果函数没有参数,那么调用它的时候可以直接用函数名。不用加“()”。

闭包:如果一个函数,访问到它的外部(局部)变量的值,那么这个函数和它所处的环境,称为闭包。

柯里化:将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。

object Test {
   def main(args: Array[String]) {
      val str1:String = "Hello, "
      val str2:String = "Scala!"
      println( "str1 + str2 = " +  strcat(str1)(str2) )
   }

   def strcat(s1: String)(s2: String) = {
      s1 + s2
   }
}

字符串

在 Scala 中,字符串的类型实际上是 Java String,它本身没有 String 类。

序号 方法及描述
1 char charAt(int index)返回指定位置的字符
2 int compareTo(Object o)比较字符串与对象
3 int compareTo(String anotherString)按字典顺序比较两个字符串
4 int compareToIgnoreCase(String str)按字典顺序比较两个字符串,不考虑大小写
5 String concat(String str)将指定字符串连接到此字符串的结尾
6 boolean contentEquals(StringBuffer sb)将此字符串与指定的 StringBuffer 比较。
7 static String copyValueOf(char[] data)返回指定数组中表示该字符序列的 String
8 static String copyValueOf(char[] data, int offset, int count)返回指定数组中表示该字符序列的 String
9 boolean endsWith(String suffix)测试此字符串是否以指定的后缀结束
10 boolean equals(Object anObject)将此字符串与指定的对象比较
11 boolean equalsIgnoreCase(String anotherString)将此 String 与另一个 String 比较,不考虑大小写
12 byte getBytes()使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中
13 byte[] getBytes(String charsetName使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中
14 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)将字符从此字符串复制到目标字符数组
15 int hashCode()返回此字符串的哈希码
16 int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引
17 int indexOf(int ch, int fromIndex)返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索
18 int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引
19 int indexOf(String str, int fromIndex)返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
20 String intern()返回字符串对象的规范化表示形式
21 int lastIndexOf(int ch)返回指定字符在此字符串中最后一次出现
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Scala面向对象 下一篇Scala简介和安装

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目