https://school.programmers.co.kr/learn/courses/1/lessons/82
--> 유니티 강의 C# 관련
https://school.programmers.co.kr/learn/courses/12
--> 30분 scala
object LearnScala {
// 배열의 내용을 출력하는 메소드
def printArray[K](array:Array[K]) = println(array.mkString("Array(" , ", " , ")"))
def main(args: Array[String]): Unit = {
// ① Array[Int]
val array1 = Array(1, 2, 3)
print("① ")
printArray(array1)
// ② Array[Any]
val array2 = Array("a", 2, true)
print("② ")
printArray(array2)
// ③ 배열의 값을 읽고 쓰기
val itemAtIndex0 = array1(0)
array1(0) = 4
print("③ ")
printArray(array1)
// ④ 배열을 붙일때는 ++연산자를 이용
// 앞에 붙일때는 +:, 뒤에 붙일때는 :+ 연산자
val concatenated = "앞에 붙이기" +: (array1 ++ array2) :+ "뒤에 붙이기"
print("④ array1과 array2를 더하면: ")
printArray(concatenated)
// 값으로 index찾기
array2.indexOf("a")
// ⑤ 다른 값만 가져오기
val diffArray = Array(1,2,3,4).diff(Array(2,3))
print("⑤ Array(1,2,3,4).diff(Array(2,3))의 결과: ")
printArray(diffArray)
val personArray = Array(("솔라",1), ("문별",2), ("휘인",3))
// ⑥ Find 메소드를 이용해서 findByName이라는 메소드 생성
// Find는 조건에 맞는 값을 찾으면 검색을 중단
// getOrElse는 일치하는 값이 없을 경우 넘겨줄 기본 값
// getOrElse가 없을때 일치하는 값이 없으면 None
def findByName(name:String) = personArray.find(_._1 == name).getOrElse(("화사",4))
val findSolar = findByName("솔라") // 값("솔라",1)을 찾아서 넘겨줌
val findSun = findByName("태양") // 값이 없으므로 getOrElse에 있는 값("화사",4)이 들어감
println(findSolar)
println(findSun)
}
}
object LearnScala {
def main(args: Array[String]): Unit = {
// ① to를 이용하면 1부터 10을 포함하는 Range를 생성합니다.
val range1 = 1 to 10
println(s"① 1 to 10 →\n\t $range1")
// ② until을 이용하면 마지막 숫자를 포함하지 않는 Range를 생성합니다.
val range2 = 1 until 10
println(s"② 1 until 10 →\n\t $range2")
// ③ by를 이용하면 숫자를 건너 띄는 Range를 생성합니다.
val range3 = 1 until 10 by 3
println(s"③ 1 until 10 by 3 →\n\t $range3")
// ④ toList를 통해 List로 변환합니다.
println(s"④ range1.toList →\n\t ${range1.toList}")
// ⑤ filter: 조건에 맞는것만 모으기(4 이상인것만 모으기)
val moreThan4 = range1.filter(_ > 4)
println(s"⑤ range1.filter(_ > 4) →\n\t $moreThan4")
// ⑥ map - 각 아이템의 값을 변경하기
val doubleIt = range1.map(_ * 2)
println(s"⑥ range1.map(_ * 2) →\n\t $doubleIt")
}
}
val num = -5
val numAbs = num.abs // 절대값
val max5or7 = numAbs.max(7) // 5(numAbs)와 7 사이의 최대값
val min5or7 = numAbs.min(7) // 5(numAbs)와 7 사이의 최소값
println(numAbs) // 5
println(max5or7) // 7
println(min5or7) // 5
val t1 = new Tuple3(1, "hello", true)
val t2 = (1, "hello", true)
println(t2)
var numbers = (1,2,3,4)
val sum = numbers._1 + numbers._2 + numbers._3 + numbers._4
println(sum)
https://www.scala-lang.org/api/2.13.3/scala/Array.html
val a1 = Array(1, 2, 3)
// a1: Array[Int] = Array(1, 2, 3)
val a2 = a1 map (_ * 3)
//a2: Array[Int] = Array(3, 6, 9)
val a3 = a2 filter (_ % 2 != 0)
//a3: Array[Int] = Array(3, 9)
a3.reverse
//res0: Array[Int] = Array(9, 3)
val seq: Seq[Int] = a1
//seq: Seq[Int] = WrappedArray(1, 2, 3)
val a4: Array[Int] = seq.toArray
//a4: Array[Int] = Array(1, 2, 3)
a1 eq a4
//res1: Boolean = true
** eq 는 이번에 처음 알게된 메서드인데 유용하게 쓰일 것 같다.
val a:Array[Int] = Array(1,2,3)
val b = Array(1,2,3)
if(a eq(b)) println("same")
else println("not same")
'프로그래밍 > Scala' 카테고리의 다른 글
Scala - Type polymorphism (0) | 2022.11.26 |
---|---|
백준 2738번 행렬의 덧셈 (0) | 2022.11.23 |
Scala Array 문법 (0) | 2022.11.22 |
Scala String 문법 (0) | 2022.11.22 |
1103 Mixin, Stacking with Traits (0) | 2022.11.03 |