변수를 사용하여 값 저장
모든 프로그램은 일반적으로 프로그램이 데이터에서 작동하는 여러 단계로 구성됩니다. 이러한 모든 단계를 실행하는 과정의 일부로, 간헐적인 결과인 데이터를 이름 지정 참조에 저장하는 것이 일반적입니다. 그런 다음 나중에 데이터를 읽거나 조작할 수 있습니다. 이름 지정 참조를 일반적으로 변수라고 합니다.
변수, 값 바인딩
변수는 코드에서 계속 참조할 값에 바인딩된 참조로 명명됩니다. 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 언어에서 작동합니다.
이제 차이점을 알아 보았습니다. 어떤 것을 사용해야 하나요? printf
및 printfn
는 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# 서식 지정 문서를 참조하세요.