조건부 논리를 사용하여 여러 실행 패스 만들기

완료됨

폴더의 파일을 기준으로 백업 파일을 만드는 프로그램이 있다고 가정해 보겠습니다. 이 프로그램은 파일 세트를 찾고 단축하는 몇 줄의 코드로 구성됩니다. 해당 날에 백업이 아직 수행되지 않은 경우에만 백업 파일을 만드는 논리를 추가하기로 하면 어떻게 되나요? 프로그램에는 해당 조건을 확인하고(백업이 이미 수행되나요?), 조건이 true인지 여부에 따라 다른 작업을 수행하는(해당 날의 백업 파일이 존재하는 경우 백업을 실행하지 않음) 방법이 필요합니다.

If 구문을 사용하여 코드 분기 만들기

if 구문은 부울 식을 계산합니다. 식이 true로 평가되면 프로그램은 특정 코드 분기를 실행합니다. if 구문은 다음과 같습니다.

if <condition> then <expression>

보다 명백한 코드 예제는 다음 예제와 같습니다.

let age = 66
if age > 65 
then printfn "Senior citizen"

Else 절을 사용하여 대체 분기 정의

if 문이 false로 평가되면 else 구문과 함께 if 절을 사용하여 다른 코드 분기를 실행합니다.

else 절을 사용하는 방법은 다음과 같습니다.

let age = 66
if age > 65 
then printfn "Senior citizen"
else printfn "Citizen"

if 구문을 표현으로 사용

지금까지 ifelse를 사용하여 코드에서 다른 분기를 만드는 방법을 살펴보았습니다. 코드가 다른 분기를 따르는 경우 부울 조건이 true 또는 false 중 어떤 값으로 평가되는지에 따라 다른 결과가 생성됩니다. 사용자가 인식하지 못할 수 있는 일은 식이 실행될 때 값을 생성한다는 것입니다.

이 예제와 같이 코드를 작성하면 이 결과가 명백해집니다.

let age = 64
let message = if age > 65 then "Senior citizen" else "Citizen"
printfn "%s" message

이 경우 ifelse는 세 개로 구성된 식과 유사하게 작동합니다. 조건이 true이면 해당 값을 반환합니다. false이면 다른 값을 반환합니다. 두 경우 모두 값이 반환됩니다. 모든 if 식에 대해 true인 팩트입니다.

이전 코드 예제를 다시 살펴보고 백그라운드에서 살펴보겠습니다.

let age = 66
if age > 65 then printfn "Senior citizen" else printfn "Citizen"

앞에서 살펴본 것과 동일한 코드 예제지만 지금은 ifelse가 같은 줄에 있습니다. 함수에서 printf 작업의 중요한 작업이 발생하기 때문에 함수는 실제 값을 반환할 필요가 없습니다. 따라서 printfn "Senior citizen" 식의 반환 값은 형식 unit의 값을 생성합니다.

참고

unit은(는) 실제 값이 반환되지 않을 때 자리 표시자 역할을 하는 값입니다. void 또는 None와(과) 같이 생각할 수 있습니다.

유의해야 할 또 다른 사항은 형식을 혼합할 수 없다는 것입니다. ifelse는 동일한 데이터 형식을 반환해야 하며 그렇지 않을 경우 오류가 발생합니다. 예를 들어, 다음 예제와 비슷한 코드는 작성할 수 없습니다.

let someCondition = true
let value = if someCondition then "hello" else 1 // not allowed

이 경우 if는 반환 형식이 string임을 확인하므로 else에서 해당 형식을 int로 변경할 수 없습니다. 이전 코드가 작동하려면 다음과 같이 수정해야 합니다.

let someCondition = true
let value = if someCondition then "hello" else "1" // allowed

elif 구문 사용

지금까지 ifelse의 작동 방식을 살펴보았습니다. elifif 사용 방법과 유사하게 사용할 수 있는 다른 구문입니다. if 구문과 마찬가지로 elif 구문은 부울 값을 사용하며 if 바로 뒤에 추가해야 합니다. elif 구문은 if 조건이 false로 평가될 때 실행됩니다. elif 사용 방법의 예는 다음과 같습니다.

let cardValue = 1
let cardDescription = if cardValue = 1 then "Ace" elif cardValue = 14 then "Ace" else "A card"
printfn "%s" cardDescription