Scala-翌日
23003 ワード
一、Scalaには方法と関数の二つの技術がある.
1.方法
定義:defメソッド名(パラメータ名:パラメータタイプ、パラメータ名:パラメータタイプ):[戻り値タイプ]={
メソッドボディ
}
e.g:
方法の注意事項:メソッドの戻り値タイプは書かなくてもよく、Scalaはメソッドボディの最後の行に基づいてタイプを導出する returnと戻り値タイプ、同生共死 メソッドに再帰操作がある場合は、戻り値のタイプを指定する必要があります.省略することはできません.
メソッドのパラメータの種類
1.既定のパラメータ
2.バンド名パラメータ
3.変長パラメータ:メソッドのパラメータが不定の場合、そのパラメータを変長パラメータとして定義できます.
メソッドの呼び出し
1.接尾辞コール
2.接尾辞呼び出し
3.かっこ呼び出し
4.かっこなし呼び出し
2.関数#カンスウ#
Scalaは関数式プログラミングをサポートし、sparkなどのビッグデータフレームワークには多くの関数式プログラミングがある.
定義:
val関数名=(パラメータ名:パラメータタイプ,...)=>{
かんすうたい
}
関数の特徴 関数自体は独立したオブジェクト である.はメソッドに類似して戻り値があり、パラメータ がある.関数を定義する場合、defキーワード は使用しません.戻り値タイプを指定する必要はなく、return を使用することはできません.
3.メソッドと関数の違いメソッドはオブジェクト向けの概念であり、オブジェクトまたはクラスに属し、 は独立して存在しない.関数自体がオブジェクトであり、Functionの親から継承され、apply、tupleなどのメソッド がある.
4.メソッドを関数に変換
注:メソッドは関数に変換できますが、関数自体がオブジェクトであるため、関数はメソッドに変換できません.
二、配列
1.定義:同じデータ型を格納できるコンテナ
2.分類:1定長配列:開いたメモリ空間は可変ではない;格納されているコンテンツは可変です
②長くなる配列:配列の長さが可変で、配列の追加と削除が可能
3.ていちょうはいれつ
4.へんちょうはいれつ
配列の操作+=追加要素を使用して配列の末尾に を追加-=削除要素の等号の後に付いているのは削除する要素 です.+=を使用して1つの配列(定長または変長どちらでもよい)を1つの変長配列に追加し、変長配列のみがこの操作 を行う.
配列の遍歴
配列のいくつかの関連操作
その他の一般的な方法配列の長さ a.length 配列内容求和 a.sum 配列の最大値 a.max 配列の最小値 a.min 最初のデータ a.head 最初の要素の後のデータを除去 a.tial
三、元グループ
1.三要素 Scalaのタプルデータには、同じタイプの は必要ありません.メタグループのデータ内容、可変 Scalaタプルの個数は22個の である.ネットワークプロセスに見られるデータ伝送のための 2.フォーマットの定義
3.下付きアクセス
1.方法
定義:defメソッド名(パラメータ名:パラメータタイプ、パラメータ名:パラメータタイプ):[戻り値タイプ]={
メソッドボディ
}
e.g:
1 def test1(): Unit = {
2 println(" ")
3 }
4 //return ,
5 def test2(x: Int, y: Int): Int = {
6 return x + y
7 }
8 // ,Scala
9 def test3(x: Int, y: Int) = {
10 x + y
11 }
12 // , , ()
13 test1
14 var a = test2(1, 2)
15 println(a)
16 print(test3(1, 5))
17 //
18 // 3
19 // 6
方法の注意事項:
1 def foop(x:Int):Int={
2 if (x<=1){
3 return 1
4 }
5 return x*foop(x-1)
6 }
7 print(foop(3))
8 // 6
メソッドのパラメータの種類
1.既定のパラメータ
1 def test1(x: Int = 0):Int = {
2 return x
3 }
4 // , ,
5 println(test1())
6 println(test1(3))
7 ###
8 0
9 3
2.バンド名パラメータ
1 def test2(x:Int=1,y:Int=2):Int={
2 return x+y
3 }
4 println(test2(x=3))
5 println(test2(x=3,y=3))
6 ###
7 5
8 6
3.変長パラメータ:メソッドのパラメータが不定の場合、そのパラメータを変長パラメータとして定義できます.
1 def test3(x: Int, num: Int*): Int = {
2 // num
3 println(num.getClass)
4 // sum
5 return num.sum + x
6 }
7
8 println(test3(1, 2, 3, 4))
9
10 ### ,Scala ,
11 def test4(y: Int = 1, num: Int*) = {
12 num
13 }
14
15 println(test4(2, 3, 4))
16 }
17 ###
18 class scala.collection.mutable.WrappedArray$ofInt
19 10
20 WrappedArray(3, 4)
メソッドの呼び出し
1.接尾辞コール
2.接尾辞呼び出し
3.かっこ呼び出し
4.かっこなし呼び出し
1 //
2 var a = Math.abs(-1)
3 println(a)
4 // ()
5 var b=Math abs -1
6 println(b)
7 ###
8 1
9 1
10 //to
11 println(1 to 10)
12 println(1.to(10))
13 ###
14 Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
15 Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
16 // ,
17 var c=Math.abs{
18 println(" ")
19 -1
20 }
21 println(c)
22 ###
23
24 1
25 // , , ,
2.関数#カンスウ#
Scalaは関数式プログラミングをサポートし、sparkなどのビッグデータフレームワークには多くの関数式プログラミングがある.
定義:
val関数名=(パラメータ名:パラメータタイプ,...)=>{
かんすうたい
}
1 val fun1 = (x: Int, y: Int) => {
2 x + y
3 }
4 println(fun1(1, 2))
5 val fun2 = () => println(" ")
6 fun2()
7 }
8 ###
9 3
10
関数の特徴
3.メソッドと関数の違い
4.メソッドを関数に変換
1 def test1(x: Int): String = {
2 return s" ${x}"
3 }
4 // + +_
5 var a = test1 _
6 var b = a(2)
7 println(b)
8 ###
9 2
注:メソッドは関数に変換できますが、関数自体がオブジェクトであるため、関数はメソッドに変換できません.
二、配列
1.定義:同じデータ型を格納できるコンテナ
2.分類:1定長配列:開いたメモリ空間は可変ではない;格納されているコンテンツは可変です
②長くなる配列:配列の長さが可変で、配列の追加と削除が可能
3.ていちょうはいれつ
1 //
2 var a=Array(1,2,3)
3 // (index) ,
4 a(0)=2
5 println(a.toBuffer)
6 ###
7 // ArrayBuffer(2, 2, 3)
8 // new
9 var b=new Array[Int](4)
10 b(0)=2
11 // ,
12 println(b.toBuffer)
13 println(b.length)
14 // new
15 var c= Array[Int](4)
16 c(0)=2
17 println(c.toBuffer)
18 println(c.length)
19 ###
20 // ArrayBuffer(2, 0, 0, 0)
21 // 4
22 // ArrayBuffer(2)
23 // 1
4.へんちょうはいれつ
1import scala.collection.mutable.ArrayBuffer
// : 0 +=
2 var a=ArrayBuffer[Int]()
3 a+=1
4 a+=1
5 a+=1
6 println(a.length)
7 println(a.toBuffer)、
8 ###
9 3
10 ArrayBuffer(1, 1, 1)
11
12 // : , , +=
13 var b=ArrayBuffer(1,2,3)
14 b+=4
15 println(b.length)
16 println(b.toBuffer)
17 ###
18 4
19 ArrayBuffer(1, 2, 3, 4)
配列の操作
1 var b=ArrayBuffer(1,2,3)
2 b+=4
3 var a =Array(1,2,3)
4 var c = b++=a
5 println(c.toBuffer)
6 ###
7 ArrayBuffer(1, 2, 3, 4, 1, 2, 3)
配列の遍歴
1 var b=ArrayBuffer(1,2,3)
2 b+=4
3 // :for
4 for (ib)println(i)
5 println("-------------")
6 // :
7 for(i 0 until b.length)println(b(i))
8 ###
9 1
10 2
11 3
12 4
13 -------------
14 1
15 2
16 3
17 4
配列のいくつかの関連操作
1
2 var a = Array(1, 2, 3, 4)
3 //b
4 var b = new Array[Int](3)
5 // , , copy
6 a.copyToArray(b, 0, 3)
7 for (i b) println(i)
8 ###
9 // 1
10 // 2
11 // 3
1 //
2 var a = Array(1, 2, 3, 4)
3 // "-"
4 var b = a.mkString("-")
5 println(b)
6 // 1-2-3-4
7 // , ,
8 var c =Array(5,4,8,6)
9 var d=c.sorted
10 println(d.toBuffer)
11 // ArrayBuffer(4, 5, 6, 8)
12 println(d.reverse.toBuffer)
13 // ArrayBuffer(8, 6, 5, 4)
その他の一般的な方法
三、元グループ
1.三要素
1 // : :var/val = ( 1, 2, 3)// 22
2 var a = (1, "sss", 3)
3 println(a.getClass)
4 println(a)
5 //class scala.Tuple3
6 //(1,sss,3)
7 // :var/val = 1 -> 2 2
8 var b = 1 -> 2->3
9 println(b)
10 //((1,2),3)
3.下付きアクセス
1 // 1
2 var a = (1, "sss", 3)
3 println(a._1)
4 println(a._2)
5 //1
6 //sss