반응형
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 |
댓글