변수를 사용하여 값 저장

완료됨

모든 프로그램은 일반적으로 프로그램이 데이터에서 작동하는 여러 단계로 구성됩니다. 이러한 모든 단계를 실행하는 과정의 일부로, 간헐적인 결과인 데이터를 이름 지정 참조에 저장하는 것이 일반적입니다. 그런 다음 나중에 데이터를 읽거나 조작할 수 있습니다. 이름 지정 참조를 일반적으로 변수라고 합니다.

변수, 값 바인딩

변수는 코드에서 계속 참조할 값에 바인딩된 참조로 명명됩니다. F#에서는 값을 바인딩하는 것으로 간주됩니다. 즉, 값을 지정된 참조에 할당하거나 ‘바인딩’하는 것입니다. 값을 바인딩하려면 아래 코드와 같이 참조 이름인 let 키워드를 사용하고 값을 할당합니다.

let name = "Chris"

name은(는) 명명된 참조이고 "Chris"는 바인딩된 값입니다.

값이 변수에 할당된 후에는 변경할 수 없습니다. 다음 코드는 컴파일되지 않으며, "오류 FS0027: 이 값은 변경 가능하지 않습니다."와 같은 오류를 생성합니다.

let name = "Chris"
name <- "Luis" // not allowed

변경 가능하게 만들기

변수를 변경할 수 있지만, 변수를 변경하기 원한다는 신호가 필요합니다. 변수 정의에서 mutable 키워드를 사용하면, 다음 코드와 같이 컴파일 오류 없이 값을 변경할 수 있습니다.

let mutable name = "Chris"
name <- "Luis" // this statement is now allowed

변수 형식

F#에는 다양한 형식의 범위가 있습니다. 대부분의 형식은 소수점을 포함하거나 포함하지 않는 서로 다른 크기의 숫자를 저장하는 것과 관련이 있습니다. 일부 형식은 텍스트 문자열 또는 부울 변수와 연결됩니다. 다음은 F# 학습을 시작할 때 만날 수 있는 형식 목록입니다.

유형 Description
bool 가능한 값은 true 또는 false입니다
int -2,147,483,648부터 2,147,483,647까지의 값.
문자열 유니코드 텍스트
부동, 이중 64비트 부동 소수점 형식.

형식이 유추됩니다

변수를 선언할 때, 형식 유무에 관계없이 선언할 수 있습니다. 변수를 선언할 때 형식을 제공하지 않으면, F# 컴파일러는 값으로 변수에 할당하는 형식이 무엇인지 가장 잘 추측합니다. 다음과 같은 문이 있습니다.

let age = 65 // int
let PI = 3.14 // float
let name = "my name" // string

컴파일러는 형식이 무엇인지 유추하고, 맞춥니다. 원하는 형식을 더 명시적으로 정할 수도 있습니다. 데이터를 할당하려면, 다음 코드와 같이 variableName:<type> 구문을 사용합니다.

let sum:float = 0.0

화면에 출력하고 싶을 경우가 많을 것입니다. 다음과 같은 여러 가지 이유가 있을 수 있습니다.

  • 응용 프로그램 출력: 응용 프로그램이 일종의 계산을 수행하고 있으며, 이 출력을 보고 싶을 수 있습니다.
  • 디버깅: 코드 디버깅의 일부로, 문제가 발생하는 것을 이해하려면 지정된 지점에서 결과를 출력해야 할 수 있습니다.

화면에 출력하려는 다른 이유가 있겠지만, 앞의 두 시나리오가 가장 일반적입니다.

그렇다면 화면에 어떻게 출력할 수 있을까요? F#에서는 세 가지 다른 함수를 사용할 수 있습니다. printf, printfn, Console.WriteLine입니다. 그렇다면 차이점은 무엇인가요?

  • printf: stdout 인라인에 출력됩니다(줄 바꿈 문자 없음).
  • printfn: stdout에 출력되고 줄 바꿈 문자를 추가합니다.
  • Console.WriteLine: 이 함수는 System 네임스페이스에 있으며, 모든 .NET 언어에서 작동합니다.

이제 차이점을 알아 보았습니다. 어떤 것을 사용해야 하나요? printfprintfn는 F#에서 더 관용적이고 선호되는 것으로 간주됩니다.

서식 지정

화면에 출력하는 과정의 일부로, 텍스트와 숫자를 결합하는 것이 좋습니다. 또는 다음을 사용하여 특정 방식으로 출력의 형식을 지정할 수 있습니다.

  • 위치 인수: 형식을 지정하려면 String.Format("My name is {0} and I live in {1}", "Chris", "UK")와 같은 위치 인수를 사용하는 String.Format과 같은 .NET 함수를 사용할 수 있습니다.

  • 문자열 보간: 변수와 텍스트를 결합하는 또 다른 방법은 보간이라는 것을 사용하는 것입니다. 이를 사용하려면 문자열 앞에 $ 부호가 있고 대괄호 {}가 있는 자리 표시자를 사용해야 합니다. 보간 사용의 예는 다음과 같습니다.

    let name = "Luis"
    let company = "Microsoft"
    printfn $"Name: {name}, Company: {company}"
    

    다음과 같이 대괄호 사이에 식을 추가할 수도 있습니다.

    let firstNumber = 2000
    let secondNumber = 21
    printfn $"The year is: {firstNumber + secondNumber}"
    

    참고

    보간을 사용하는 형식 검사는 없으므로, 사용하기 간단해 보일 수 있습니다. 올바르게 결합해야 합니다.

  • 지정자: 출력하려는 항목의 일부로 형식 지정자를 사용할 수도 있습니다. 지정자를 사용하는 것이 F#에서 서식을 지정하는 가장 일반적으로 사용되는 방법입니다. 예를 들면 다음과 같습니다.

    let name = "Chris"
    printf "Hi %s" name
    // prints: Hi Chris
    

    여기서 포맷터 %s을 사용하여 첫 번째 문자열을 변수 name와 혼합하는 방법을 확인할 수 있습니다.

    참고

    %s 또는 %i와 같은 포맷터를 사용하는 경우, 컴파일러가 형식을 확인합니다. 위치 인수가 지정한 형식이 아닌 경우 오류가 발생됩니다.

형식 지정자

많은 형식 지정자가 있습니다. 다음은 발생할 가능성이 있는 몇 가지 예입니다.

지정자 설명 예제
%s 문자열 및 이스케이프되지 않은 콘텐츠에 사용됩니다 printf "Hello %s" name
%d, %i 10진수 정수로 형식이 지정되고, 기본 정수 형식이 서명된 경우 서명됩니다 printf "Age: %i" 65
%b 부울 true 또는 false printf "Setting on: %b" true

서식 지정에 대한 자세한 정보가 있습니다. 모든 기능에 대해 알아보려면 F# 서식 지정 문서를 참조하세요.