본문 바로가기
블록체인/TACT

[Tact] Bools

by 제이제이_은재 2024. 5. 15.
반응형

https://tact-by-example.org/02-bools

 

Bools

이전에 정수에 대해 살펴봤었는데, 이제는 bools 이다. The bools 는 다른 언어와 마찬가지로 true나 false 의 값을 가질 수 있다. Bool 은 boolean 혹은 logical 연산에 편리하며, 플래그를 저장하는데도 효율적이다.

boolean 으로 지원되는 연산은 && || !  이다. bools 는 1 bit 밖에 차지하지 않기 때문에 굉장히 공간 효율적이며, 1000 bools 를 저장하는데 일년에 필요한 비용은 0.00072 TON 정도이다.

 

import "@stdlib/deploy";

contract Bools with Deployable {
 
    // contract persistent state variables
    b1: Bool = true;
    b2: Bool = false;
    b3: Bool;

    init() {
        self.b3 = !self.b2;
    }

    receive("show all") {
        dump(self.b1);
        dump(self.b2);
        dump(self.b3);
    }

    receive("show ops") {
        let b: Bool = true; // temporary variable
        dump(b);

        b = self.b1 && self.b2 || !self.b3;
        dump(b);

        dump(self.b1 == true);
        dump(self.b1 == self.b2);
        dump(self.b1 != self.b2);
    }

    get fun result(): Bool {
        return self.b1;
    }
}

 

위 예시를 실행해보았을 때, 결과는 다음과 같다. getter 함수인 result 실행 시, 항상 b1 값인 true를 리턴한다.

> 🔍 Calling getter result:
Return value: true

 

그럼 setter 함수인 show all 실행 시, b1, b2, b3 의 값이 출력된다. b3 값은 컨트랙트 배포시 init에 의해 초기화된 값이 출력된다.

> 📤 Sending message show all:
Message sent: "show all", from deployer, to contract, value 1, not bounced
#DEBUG#: true
#DEBUG#: false
#DEBUG#: true
Transaction Executed: success, Exit Code: 0, Gas: 0.004602

 

또 다른 setter 함수인 show ops 실행 시는 아래와 같이 출력되는 걸 확인할 수 있다.

 

> 📤 Sending message show ops:
Message sent: "show ops", from deployer, to contract, value 1, not bounced
#DEBUG#: true // b = true
#DEBUG#: false // true && false || false
#DEBUG#: true // true == true
#DEBUG#: false // true == false
#DEBUG#: true // true != false
Transaction Executed: success, Exit Code: 0, Gas: 0.005668
반응형

'블록체인 > TACT' 카테고리의 다른 글

[Tact] Strings  (0) 2024.05.17
[Tact] Addresses  (0) 2024.05.17
[Tact] Integer Opertaions  (0) 2024.05.15
[Tact] Integers  (0) 2024.05.15
[Tact] Simple 카운터  (0) 2024.05.07

댓글