Verse에서 int 는 integer를 저장하고 처리하기 위한 타입으로 사용됩니다. Verse의 int 는 양수, 음수, 0을 포함할 수 있으며 소수 부분은 없습니다. 지원되는 integer 범위는 -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807까지입니다.
사전 정의된 int 값을 int 리터럴로 코드에 포함할 수 있습니다. int 리터럴은 코드의 integer입니다.
다음 예시는 integer 상수 및 변수를 int 리터럴로 생성하는 방법을 보여줍니다.
# 이 변수는 보편적으로 맞기 때문에 변하지 않습니다.
AnswerToTheQuestion : int = 42
# 화살 통의 비용은 이만큼의 코인이며, 이는 변할 수 없습니다.
CoinsPerQuiver : int = 100
# 화살 통에는 이만큼의 화살이 들어 있으며, 이는 변할 수 없습니다.
ArrowsPerQuiver : int = 15
# 플레이어는 현재 225개의 코인과 3개의 화살을 가지고 있습니다. 이 값은 변할 수 있습니다.
var Coins : int = 225
var Arrows : int = 3
# 게임은 플레이어의 총 구매 횟수를 트래킹합니다.
# 지금까지 플레이어는 아무 것도 구매하지 않았습니다.
var TotalPurchases : int = 0
int 연산
int 타입은 수학 연산 및 타 integer와의 비교를 지원합니다.
수학
Verse에서 integer를 사용하여 사칙연산을 사용할 수 있습니다. + 기호는 덧셈, - 기호는 뺄셈, * 기호는 곱셈, / 기호는 나눗셈입니다.
integer의 경우 연산자 / 는 실패 가능하며 성공할 경우 결과는 rational 타입입니다.
유리수 타입은 다음 함수의 파라미터로만 사용될 수 있습니다.
다음 코드는 integer 나눗셈을 사용하여 플레이어가 코인으로 화살을 몇 개나 구매할 수 있는지 판정합니다. integer 나눗셈은 if 표현식에서 사용됩니다. integer 나눗셈은 실패 가능하므로 실패 컨텍스트 내에 있어야 하기 때문입니다.
if (NumberOfQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
NumberOfArrowsYouCanBuy : int = NumberOfQuiversYouCanBuy * ArrowsPerQuiver
기본 수학 연산(덧셈, 뺄셈, 곱셈)의 연산자를 복합 사용하여 변수 값을 업데이트할 수도 있습니다. 복합 연산자는 결과를 수학 연산의 첫 피연산자에 할당하는 것과 동일합니다. 다음 코드는 int 수학을 사용하여 플레이어에게 코인을 받고 화살을 판매합니다.
# 플레이어로부터 코인을 받습니다. 이때 플레이어가 코인을 충분히 갖고 있는지
# 미리 확인하지 않으면 플레이어의 코인이 음수가 될 수 있습니다.
set Coins -= CoinsPerQuiver
# 플레이어에게 화살을 줍니다.
set Arrows += ArrowsPerQuiver
# 구매 횟수로 셉니다. 이에 대한 변수가 없습니다.
set TotalPurchases += 1
연산자 /= 는 int 에서 지원되지 않습니다. integer 나눗셈의 결과는 유리수 타입이어서 int 에 할당될 수 없기 때문입니다.
부호 있는 integer
부호 있는 integer는 양수, 음수, 0이 될 수 있는 값입니다. 연산자 - 는 -3 과 같이 integer 앞에 들어가서 integer를 음수로 만드는 데 사용될 수 있습니다.
연산자 + 를 integer 앞에 사용해서 코드를 보기 좋게 정렬할 수는 있지만 이는 해당 integer의 값에 영향을 미치지 않습니다.
# 플레이어에게 화살을 판매하는 또 다른 방법입니다. 위 수학 섹션의
# 코드와 기능적으로 동일합니다.
set Coins += -CoinsPerQuiver
set Arrows += +ArrowsPerQuiver
set TotalPurchases += +1
비교
실패 가능 연산자 = 를 사용하여 두 integer가 동일한지 테스트하고 실패 가능 연산자 <> 를 사용하여 두 integer가 다른지 테스트할 수 있습니다.
숫자는 순서가 있으므로 실패 가능 연산자 < 를 사용하여 한 integer가 다른 integer보다 작은지 확인하고 실패 가능 연산자 > 를 사용하여 한 integer가 다른 integer보다 큰지 확인할 수 있습니다.
실패 가능 연산자 <= 를 사용하여 한 integer가 다른 integer보다 작거나 같은지 확인하고 실패 가능 연산자 >= 를 사용하여 한 integer가 다른 integer보다 크거나 같은지 확인할 수 있습니다.
# 플레이어가 이 구매 비용을 지불할 수 있는지 확인합니다.
if (Coins >= CoinsPerQuiver):
# 지불할 수 있습니다! 구매를 진행합니다.
set Coins -= CoinsPerQuiver
set Arrows += ArrowsPerQuiver
set TotalPurchases += 1
표준 라이브러리
표준 라이브러리는 integer를 생성하고 사용하는 데 도움이 되는 함수와 일반적인 수학 구조체 및 함수를 제공합니다. 이러한 기능에 대한 자세한 내용은 Verse API 레퍼런스를 참고하세요.
integer의 다른 표현
16진법 숫자 체계를 사용해서 integer를 나타낼 수도 있습니다. 16진법은 10진수를 사용하는 10진법 숫자 체계와 달리 16진수를 사용합니다. 즉 16진법의 값은 숫자 0-9 및 글자 A-F 로 표현됩니다. 예를 들어 0x7F 는 127 과 같고 0xFACE 는 64206 과 같습니다.
구현 세부 사항
향후 업데이트에서 int 는 시맨틱하게 모든 크기의 integer를 나타낼 것이지만, 현재 Verse에서 int 는 부호 있는 64비트 integer로 구현됩니다. 이 업데이트가 이뤄지기 전까지 int 는 [ -2^63 , … , -1 , 0 , 1 , … , 2^63 - 1 ] 범위 내에 있어야 합니다. 이 int 크기 범위 밖의 integer와 수학 연산 결과는 integer 오버플로 라는 런타임 오류를 발생시킵니다.
현재 integer에 이러한 제한이 있지만 integer가 있는 Verse 코드를 지금 작성하면 향후 임의 정밀도를 가질 수 있는 integer와 시맨틱하게 동일해질 것입니다.
퍼시스턴스 타입
integer 값은 퍼시스턴스로, 모듈 스코프 weak_map 변수에서 이를 사용할 수 있고 게임 세션에 걸쳐 값이 지속될 수 있습니다. Verse의 퍼시스턴스에 대한 자세한 내용은 Verse에서 퍼시스턴스 데이터 사용하기를 참고하세요.