Chapter 06. Tcl-Data Types

Tcl 언어의 기본 데이터 유형은 string 뿐이며, 가끔 Tcl언어는 문자열언어라고 표현하기도 합니다.
이러한 기본 데이터 유형으로 목록 및 연관배열과 항목에 대한 복합적인 데이터 유형을 작성하기도 합니다.

Tcl언어에서 데이터 타입은 단순한 Tcl 객체일뿐만 아니라
핸들, 그래픽 객체 (주로 위젯) 및 채널 I/O와 같은
복잡한 객체를 나타낼 수도 있습니다.

이제 각각에 대해서 자세히 살펴 보겠습니다.

단순한 Tcl 객체들


Tcl 언어에서는 데이터의 표현에 정수, 부울, 부동 소수점 또는 문자열이든 상관 없습니다.
별도로 변수를 선언하지 않고 언제
든지 변수를 사용하고 싶다면 해당 값을 할당하면 변수가
자동으로 생성됩니다.

또한 필요한 경우 이미 지정된 데이터 유형을 다른 데이터 유형으로 변환 할 수 있습니다.
이러한 변수 할당 구문은 다음과 같이 사용합니다.

#!/usr/bin/tclsh

set myVariable 18
puts $myVariable

상기의 코드를 실행하면 다음과 같이 표시됩니다.

18

상기의 명령문은 myVariable이라는 변수를 만들고 18이라는 문자열 값으로 설정합니다.

하지만, 큰 따옴표를 사용하지 않았습니다.
이제, 이렇게 만든 변수를 이용해서 산술 연산을하려고하면
자동으로 정수값으로 바뀝니다.
다음은 간단한 예제입니다.

#!/usr/bin/tclsh

set myVariable 18
puts [expr $myVariable + 6 + 9]

상기의 코드를 실행하면 다음과 같이 표시됩니다.

33

여기서 중요한 점은 변수에는 기본값이 없고,

반드시 사용하기 전에 값을 할당해야합니다.

puts 명령어를 사용해서 표시한다면 변수의 값인 18이 적절한 문자열로 변환됩니다.
다른언어와는 다르게 Tcl언어에서는 이러한 복잡한 데이터 구조도 쉽게 만들 수 있도록
도와줍니다.
또한 Tcl은 동적인 객체 특성으로 인해 더 효율적으로 작동합니다.

문자열 표현


다른 언어와는 달리, Tcl 언어에서는 공백이 없는 하나의 단어일 경우 큰 따옴표를
사용할 필요가 없습니다.
예를 들면 다음과 같습니다.

#!/usr/bin/tclsh

set myVariable hello
puts $myVariable

상기의 코드를 실행하면 다음과 같이 표시됩니다.

hello

여러 개의 문자열을 나타 내기 위해서는 큰 따옴표(" ") 나 중괄호({ })를 사용할 수 있습니다.
다음예제를 참고하시기 바랍니다.

#!/usr/bin/tclsh

set myVariable "hello world"
puts $myVariable

set myVariable {hello world}
puts $myVariable

상기의 코드를 실행하면 다음과 같이 표시됩니다.

hello world
hello world

리스트


리스트는 항목들을 그룹화한 것일 뿐입니다.
큰 따옴표 또는 중괄호를 사용해서 간단히 리스트를 사용할 수 있습니다.
다음의 코드는 리스트를 사용하는 간단한 프로그램입니다.

#!/usr/bin/tclsh

set myVariable {red green blue}
puts [lindex $myVariable 2]

set myVariable "red green blue"
puts [lindex $myVariable 1]

상기의 코드를 실행하면 다음과 같이 표시됩니다.

blue
green

연관 배열


키와 값으로 사용되는 연관 배열은 정수가 아닌 문자열 인덱스(키)를 사용합니다.
다음은 간단한 예제입니다.

#!/usr/bin/tclsh

set marks(english) 80
puts $marks(english)

set marks(mathematics) 90
puts $marks(mathematics)

상기의 코드를 실행하면 다음과 같습니다.

80
90

핸들


Tcl언어에서 핸들은 일반적으로 파일 및 그래픽 객체를 나타내는 데 사용됩니다.
또한 다음과 같이 네트워크 요청 및 직렬 포트 통신, 소켓 또는 I / O 장치에도 사용됩니다.
다음 예제는 파일 핸들을 생성해서 사용하는 간단한 예제입니다.

#!/usr/bin/tclsh

set myfile [open "filename" r]

results matching ""

    No results matching ""