Akka는 액터 모델을 이용하여 병행 및 분산처리를 효과적으로 할 수 있게 도와주는 라이브러리다. * 액터 모델이란 정해진 수의 액터가 있고 액터는 메시지를 가질 수 있고 메시지에는 액터를 받았을 때 해야되는 동작을 담을 수 있다. 그리고 이러한 액터를 통해서 메시지를 주고 받는 형식을 뜻한다. 또 액터를 주고 받는 과정에서 순서에 상관없이 동작하며 서로의 상태를 공유하지 않는다. Akka는 Java의 Thread를 이용해서 만들어졌지만 Thread와 차별화되는 점은 동기적 방식을 제한하고 비동기적인 방식을 사용하는 것이다. 그리고 액터 모델의 특징을 가지고 있어 데드락이나 락에 대한 걱정을 하지 않고 병행처리를 할 수 있다. Akka를 사용하기 위해서는 ` ActorSystem("TestSystem")..
apply 메서드를 선언하면 해당 객체의 인스턴스는 apply 메서드라고 명시하지 않아도 파라미터를 넣는 형식으로 사용할 수 있다. 예를 들어 class ApplyTestClass { def apply(): Int = 1 } 라고 정의한 후에 아래와 같이 코딩하면 val applyTestClass = new ApplyTestClass() println(applyTestClass()) 1을 출력하게 된다. 소괄호가 아닌 중괄호를 사용해도 되는데 이는 파라미터가 없으면 에러가 발생한다. val applyTestClass = new ApplyTestClass() println(applyTestClass{}) // Too many arguments error 때문에 class ApplyTestClass { de..
간단하게 var은 변수를 담기 위한 키워드고 val은 상수를 담기 위한 키워드며 def는 함수를 담기 위한 키워드다. var과 val의 차이점은 var은 변수이기에 변경이 가능하고 val은 상수이기에 변경할 수 없다. 예제) var number = 1 number = 2 // 정상 val number = 1 number = 2 // 에러 def에도 그냥 값을 담을 수 있어 def와 var, val에 대한 내용이 헷갈릴 수 있는데 차이점은 var, val은 선언을 할 때 값이 정해지며 def는 호출할 때 계산한 후 값을 반환한다. 예제) val numberA = 1 var numberB = 2 val printA = numberA + numberB def printB = numberA + numberB p..