Scala의 변수

DataCamp의 最近 시작한 Scala 과정을 보십시오: Scala Introduction입니다.

Scala는 大数据 분야에서 Apache Spark와 함께 사용되는 대량의 데이터 처리에서 자료과학자들에 의해 널리 사용되고 있습니다. 아래에 列挙되는 다양한 기본적인 특징을 가지고 있는 오브젝트 지향 및 함수형 프로그래밍 언어입니다:

  1. Scala는 정적 타입 언어로, 변수에 대한 데이터 타입이 사용되기 전에 정의되는 것을 知ります. 타입 체크는 컴파일 시간에 대해 行われ而不是 runtime에서 行われます.
  2. 또한 “강한 타입” 언어로 변수가 연산에 사용되기 전에 확인되는 것을 지칭합니다.
  3. 또한 타입 推論을 지원하며, 컴파일러가 표현식 또는 리터럴에서 타입을 추론하기 때문에 변수의 타입 선언은 선택적입니다.

이 튜토리얼에서는 다음과 같은 주제들을 다룰 것입니다:

변수

변수는 메모리의 이름이 지어진 공간이며, 컴파일러는 해당 변수의 데이터 유형에 따라 예약된 위치를 할당합니다. Scala에서 변수는 다음과 같은 문법으로 선언합니다:

val or val variable_name: variable_datatype = value;

위 문법에서, 변수는 ‘var’ 또는 ‘val’ 키워드를 사용하여 두 가지 방식 중 하나로 정의할 수 있습니다. ‘변수명’으로 새 변수를 정의하고, 그 뒤에 콜론을 붙입니다. 변수의 데이터 유형은 ‘변수_데이터타입’으로 유효한 데이터 타입이 될 수 있습니다. 그 다음 ‘값’으로 변수명에 대입합니다.

예를 들어:

val varValue: Byte = 8;

‘val’은 변수를 정의하는 키워드이며, ‘varValue’는 변수 이름입니다. ‘Byte’ 타입이며 값은 8입니다. ‘Byte’는 8비트의 부호있는 값으로, 2−7에서 27−1 사이입니다.

위의 ‘변수_데이터타입’은 Scala에서 존재하는 모든 데이터 타입일 수 있으며, 다음과 같습니다.

  1. Int: 32비트 부호있는 값(양수 또는 음수)로, 범위는 2−31에서 231−1입니다.
  2. Byte: 8비트 부호있는 값으로, 범위는 2−7에서 27−1입니다.
  3. Short: 16비트 부호있는 값으로, 범위는 2−15에서 215−1입니다.
  4. Float: 32비트나 64비트입니다.

결과적으로, 다음과 같은 자료형 Long, Char, Boolean, Char, String, Boolean, Null는 모두 자신의 rang에 대한 자세한 설명을 Scala 초보가 들어가는 가이드 자습서에서 제시합니다. 또한, ‘variable_datatype’는 대문자로 시작해야 합니다. 예를 들어 Int는 ‘I’를 포함하고 있으므로 이전에 언급한 모든 자료형은 Scala의 객체입니다.

Scala로 変数를 정의하는 규칙

Scala에서 変数를 정의하는 규칙과 conventio는 다음과 같습니다:

  1. 変数 이름은 소문자 캡챠 형태로 시작합니다. 예를 들어, 変수 이름 ‘nameOfgirl’에서 ‘n’가 소문자로 시작합니다. 그 다음 ‘O’와 ‘G’는 모두 单词의 첫 문자로 대문자로 바꾼 것입니다.
  2. 変数 이름은 Scala에서 정의한 예약어나 키워드를 포함하지 않아야 합니다.
  3. 変数 이름은 dollarn($) 또는 하이픈(_)를 포함할 수 있지만, ‘#’,’&’과 같은 다른 특수 문자를 사용할 수 없습니다. 또한, 하이픈을 사용하는 것을 推奨하지 않습니다.
  4. 변수 이름에 흰색(탭, 공백)이 들어가지 않아야 합니다.
  5. 변수 이름은 문자로 시작되어야 하며 숫자나 다른 문자로 시작할 수 없습니다.

Mutable 변수

Mutable 변수는 変수를 선언한 이후에도 값을 변경할 수 있는 것을 허용합니다.

Mutable 변수의 문법은 다음과 같습니다:

var variable_name : variable_datatype = value;

Mutable 변수의 문법은 다음과 같이 정의될 수 있습니다:

var variable_name = value;

Mutable 변수의 예시는 아래와 같습니다:

var nameOfThing: String = "Car";

위 예시는 var 키워드를 포함하며, 이는 Mutable 변수를 정의하는 데 사용됩니다. 변수의 이름은 ‘nameOfThing’입니다. 콜론이 뒤따르며 변수의 데이터 타입은 ‘String’입니다. 메모리에 저장된 값은 ‘Car’가 될 것입니다.

다른 문법을 사용한 Mutable 변수의 예는 아래와 같이 할 수 있습니다:

var nameOfThing = "Car";

위에서 한 것처럼 데이터 타입 없이 변수 정의가 가능합니다. 스칼라 컴파일러는 이를 자동으로 ‘String’ 데이터 타입으로 결정하며, 이는 타입 추론이라고 합니다.

아래와 같이 쉽게 변수의 값을 변경할 수 있습니다:

nameOfThing = "Bike"; print(nameOfThing)

변수의 값은 “Car”에서 “Bike”로 변경될 것입니다. 출력은 “Bike”가 될 것입니다. 왜냐하면 ‘var’ 키워드는 변수의 값을 변경할 수 있게 해주기 때문입니다 (출처: 스칼라의 변수).

Immutable 변수

Immutable 변수는 한 번 생성되면 값이 변경되지 않는 변수이며, ‘val’ 키워드를 사용하여 선언됩니다.

Immutable 변수의 문법은 아래와 같이 표시됩니다:

val variable_name : variable_data type = value;

Immutable 변수를 다음과 같이 정의할 수도 있습니다:

val variable_name = value;

Immutable 변수의 예시는 아래와 같습니다:

val numberOfThing: Int = 2;

위 예제에서는 Immutable 변수를 정의하기 위한 키워드로 val을 사용하고, 변수 이름을 ‘numberOfThing’으로 지정했습니다. 변수의 데이터 타입은 ‘Int’로 지정되어 있으며, 메모리에 저장된 값은 2입니다.

다른 구문으로 Immutable 변수를 정의하는 예제는 아래와 같습니다:

val numberOfThing = 2;

위에서처럼 변수의 데이터 타입 없이 변수를 정의할 수 있으며, 스칼라 컴파일러가 자동으로 ‘Int’ 데이터 타입으로 판단합니다. 이 과정을 타입 추론이라 합니다 (출처: Scala의 변수).

아래와 같이 변수의 값을 변경할 수 없습니다:

numberOfThing = 7;

위 예제는 “error: not found: value numberOfThing”와 같은 오류를 발생시키며, 이는 값의 재할당이 불가능함을 보여줍니다:

다중 선언 및 할당

스칼라에서는 ‘var’ 키워드를 사용하여 변수 이름을 쉼표로 구분하고 “=” 기호와 함께 변수의 값을 지정하여 다중 선언이 가능합니다.

var (x, y, z) = (5, 4.5, "Sit")

위 예제에서는 변수 x, y, z가 각각 값 5, 4.5, “Sit”로 할당되는 것을 볼 수 있습니다.

스칼라에서는 ‘val’ 키워드를 사용하여 변수 이름을 쉼표로 구분하고 “=” 기호와 함께 변수의 값을 지정하여 한 줄로 다중 할당이 가능합니다.

val a, b, c = 1;

위 예제에서는 변수 a, b, c가 각각 값 1로 할당되는 것을 볼 수 있습니다.

변수의 범위

scop는 코드의 지정 블록 내에서 생명 주기를 가지는 변수의 가시성입니다. 변수는 로컬 스코프나 글로벌 스코프에 정의 될 수 있습니다. 예를 들어:

var globalVar = 10 def sub(){ var difference = 9-4; } print(difference)//에러 print(globalVar)//유효

위 코드에서, ‘difference’ 변수는 ‘sub’ 메소드 내에 선언된 로컬 스코프에 있으며, 뺄셈 연산은 유효한 결과를 줄 것입니다. 그러나 ‘sub’ 메소드 외부에서 값을 출력하면 에러가 발생합니다. 또한 ‘globalVar’라는 변수는 프로그램 어디에서든 접근할 수 있는 글로벌 스코프에 있으며, 어떤 연산을 수행해도 됩니다.

Scala에서 변수의 스코프 유형은 3가지가 있습니다 (출처: Scala- 변수):

  1. 로컬 변수
  2. 필드
  3. 메소드 매개 변수

로컬 변수

로컬 변수는 메소드 내에 선언되는 가변 또는 불변 변수로, 메소드 내에서만 접근할 수 있지만 외부에서는 접근할 수 없습니다.

로컬 변수에 대해 알아보기 위한 간단한 예제를 아래에서 볼 수 있습니다:

class Perimeter { def triangle() { var side1 = 10; var side2 = 20; var side3 = 30; var total = side1+side2+side3; print("Perimeter of the triangle is: " + total); } } object Test { def main(args:Array[String]) { val p1 = new Perimeter() p1.triangle() } }
defined class Perimeter defined object Test

위 코드는 결과를 제공합니다:

삼각形的 둘레는: 60

위 프로그램은 ‘Perimeter’라는 클래스와 ‘Test’라는 객체를 포함하며, side1, side2, side3이라는 세 가변 변수를 가진 ‘triangle’라는 메소드가 있습니다. 계산과 결과 출력은 메소드 내에서 수행되며, 정확한 출력을 제공할 것입니다.

필드

클래스 내에 정의 된 변수는 필드 변수로 불리며, 이러한 변수는 어떠한 형식의 불변 또는 변경 가능한 변수일 수 있습니다. 변수가 클래스 내에 선언되면 자동으로 public 修饰자가 되지만, 변수가 프로그램의 어느 곳에서 접근할 수 있는 것처럼 的任何方法에 정의되지 않아야 합니다. 그러나 独家 修饰자는 정의 된 클래스 내에서 접근할 수 있으나 클래스 外科手术 밖에서나 사용자 객체 내에서 접근할 수 없습니다.

class FieldExample { var value1 = 10; private var value2 = 30; def operation() { println("Value of value1:"+value1) } println("Value of value2: "+value2); } object Demo { def Main(args:Array[String]) { val obj = new FieldExample() obj.operation() print(obj.value1)//Valid print(obj.value2) } }
defined class FieldExample defined object Demo

위의 코드는 다음과 같은 결과를 제공합니다:

value2의 값: 30
value1의 값:10
10

위의 프로그램은 ‘FieldExample’이라는 클래스, ‘Demo’가 될 예정의 인스턴스, ‘operation’라는 메서드를 포함하고 있습니다. 公的 변수 value1는 点点 표현法을 사용하여 접근할 수 있으며, 값은 10입니다. 独家 변수 value2가 30입니다는 어느 것을 다시 보며 해당 변수에 대한 접근과 인쇄는 에러를 발생시킵니다.

메서드 매개 변수

메서드가 호출 될 때 값을 받아들일 수 있는 변수는 변경 가능한 變수로 정의되며 ‘val’ 키워드를 사용하여 정의되ます. 또한 변수는 그를 참조하는 것이 있으면 메서드 外科手术 밖에서도 접근할 수 있습니다.

Method Parameters에 대한 간단한 예를 봅시다:

class Triangle { def calculate(height: Int, width: Int) { var result = 0.5*(height+width); println("Area of triangle is: " + result); } } object Area { def main(args:Array[String]) { val a = new Triangle() a.calculate(4,5); } }
defined class Triangle defined object Area

Triangle Area: 4.5

위의 프로그램은 ‘Triangle’라는 클래스를 包含한다. 두 개의 메서드 매개 변수인 height와 width를 갖는 ‘calculate’ 메서드가 포함되어 있다. 정수 값 4와 5가 ‘calculate’를 호출하는 대상으로 객체 인스턴스 a를 사용할 때 전달된다.

결론

恭贺您,本教程已学习完毕!

在本教程中,您学习了Scala的变量,变量定义规则,以及带有多重声明和赋值以及变量作用域的不同类型变量。

如果您想了解更多关于Scala的知识,请参加DataCamp的Scala入门课程。

Source:
https://www.datacamp.com/tutorial/variables-in-scala