TCL 스 크 립 트 언어 설명
6701 단어 TCL 스 크 립 트 언어Linux 시스템 학습
TCL 은 매우 통용 되 는 스 크 립 트 언어 로 기능 이 강하 다.최초 로 '도구 명령 언어', 'Tool Command Language' 라 고 불 렀 지만, 현재 로 서 는 그런 의미 가 아 닙 니 다. 하지만 TCL 을 'tickle' 이 라 고 부 릅 니 다. TCL 은 빠 른 원형 개발, 스 크 립 트 프로 그래 밍, GUI, 테스트 등에 자주 사 용 됩 니 다.
실제로 두 부분 이 포함 되 어 있 습 니 다. 하나의 언어 와 하나의 라 이브 러 리 입 니 다. 우선, Tcl 은 간단 한 스 크 립 트 언어 로 텍스트 편집기, 디 버 거, 셸 과 같은 상호 교환 프로그램 에 명령 을 내 리 는 데 사 용 됩 니 다. 간단 한 문법 과 확장 성 이 강 합 니 다. Tcl 은 내장 명령 의 능력 을 향상 시 키 기 위해 새로운 과정 을 만 들 수 있 습 니 다. 그 다음, Tcl 은 라 이브 러 리 패키지 입 니 다.프로그램 에 끼 워 넣 습 니 다. Tcl 라 이브 러 리 에는 분석 기, 내장 명령 을 실행 하 는 루틴, 확장 (새로운 과정 정의) 할 수 있 는 라 이브 러 리 함수 가 포함 되 어 있 습 니 다. 프로그램 은 Tcl 명령 을 만 들 고 실행 할 수 있 습 니 다. 명령 은 사용자 가 만 들 수도 있 고 사용자 인터페이스의 입력 에서 읽 을 수도 있 습 니 다. (단추 나 메뉴 등)... 그러나 Tcl 라 이브 러 리 는 명령 을 받 은 후 내 장 된 명령 을 분해 하고 실행 하 며 재 귀적 인 호출 이 자주 발생 합 니 다.
Tcl 데이터 형식 은 간단 합 니 다. Tcl 에서 처리 할 데 이 터 는 문자열 하나 뿐 입 니 다. Tcl 은 변수 값 을 문자열 형식 으로 저장 합 니 다. 실제 사용 유형 에 관심 이 없습니다. 내 장 된 Tk (toolkit) 그래 픽 도 구 는 간단 하면 서도 풍부 한 그래 픽 기능 을 제공 하여 간단 한 그래 픽 인터페이스 를 쉽게 만 들 수 있 습 니 다.
Tcl 의 실행 은 대화 형 입 니 다. Tcl 은 대화 형 명령 인터페이스 를 제공 합 니 다. 인터페이스 에는 두 가지 가 있 습 니 다. tclsh 와 wish. tclsh 는 Tcl 명령 만 지원 합 니 다. wish 는 Tcl 과 Tk 명령 을 지원 합 니 다. 대화 형 인터페이스 를 통 해 우 리 는 UNIX 셸 명령 을 실행 하 는 것 처럼 명령 을 하나씩 실행 하고 실행 결 과 를 즉시 얻 을 수 있 습 니 다.
Tcl/Tk 는 크로스 플랫폼 지원 을 제공 할 수 있 습 니 다. Tcl 언어 는 현재 유행 하 는 유 닉 스, WINDOWS, Macintosh 등 시스템 에서 실 행 될 수 있 으 며 명령 이 통용 되 며 시작 하 는 디 테 일 만 다 릅 니 다.
기본 문법
1. 명령 구조: commandName arguments. 모든 명령 은 줄 을 바 꾸 거나 분리 합 니 다. 예 를 들 어:
set foo 0
set bar 1;
2. 주석:\# 주석 을 사용 하지만 주의해 야 할 것 은 아래 의 주석 이 잘못 되 었 습 니 다.
set foo 0\# 이것 은 주석 입 니 다 (오류)
tcl 해상도 기 는 항상 하나의 명령 이 줄 을 바 꾸 거나 번호 로 끝나 야 한다 고 생각 하기 때문에 다른 것 은 같은 줄 에서 매개 변수 로 여 겨 집 니 다. 따라서 정확 한 것 은:
set foo 0; #이거 주석 이에 요.
사실은 컴 파일 형 프로 그래 밍 언어 에 익숙 한 사람 에 게 줄 의 끝 에 하 나 를 추가 하 는 것 은 당연한 일이 기 때문에 이것 은 우리 에 게 익숙 하지 않 은 것 이 없 을 것 이다.
3. 데이터 형식: tcl 은 int, double, char 등 다른 언어 를 지원 하지 않 습 니 다. 유일 하 게 지원 하 는 것 은 string 형식 입 니 다. 즉, 하나의 변 수 는 서로 다른 시간 에 서로 다른 유형 으로 이해 할 수 있 습 니 다.
4. 변수: tcl 은 두 가지 유형의 변수, 변수 와 배열 을 정의 할 수 있 습 니 다.
변수: tcl 변 수 는 설명 없 이 직접 값 을 부여 할 수 있 습 니 다. 변수 에 값 을 부여 하 는 예:
set ba 1;
set ma "qian lifing";\# 따옴표 의 역할 은 컴 파일 러 에 빈 칸 을 포함 하 는 것 을 알려 주기 위해 서 입 니 다.
변 수 를 가 져 오 는 값 은 대응 하 는 변수 이름 앞 에 $를 추가 해서 얻 을 수 있 습 니 다. 예 를 들 어:
puts $ba; #b 출력 값 표시
배열: 배열 도 설명 할 필요 가 없고 직접 값 을 부여 합 니 다. 예 를 들 어:
set qian(0) 1;
set qian(1) 2;
비교적 재 미 있 는 부분 은 배열 아래 표 시 는 순서대로 쓰 지 않 아 도 되 고 숫자 가 아니 라 문자열 일 수도 있다 는 것 이다. 예 를 들 어:
set qian(123) f;
set qian(6789)fs;
set qian(good)yes;
puts $qian (123) 을 사용 하여 배열 의 내용 을 얻 을 수 있 습 니 다. 물론 tcl 배열 도 다 차원 배열 을 지원 합 니 다. 성명 형식 은 다음 과 같 습 니 다.
setqian (1, 1, 1, 1) fs;\# 아무 거나
만약 우리 가 이미 할당 한 배열 의 정 보 를 보 려 면 parray 명령 을 사용 할 수 있 습 니 다. 예 를 들 어:
parray qian; #qian 배열 의 모든 정 보 를 출력 합 니 다.
5. 문자열 작업: string 명령 의 기본 문법 은 다음 과 같 습 니 다 (여기 string 1, string 2 는 문자열 일 수도 있 고 변수 일 수도 있 습 니 다. option 은 다음 옵션 중 하나 입 니 다).
stringoption string1 string2;
option 동작 옵션:
compare 는 사전 의 정렬 방식 에 따라 비교 합 니 다. string 1 string 2 에 따라 각각 - 1, 0, 1 을 되 돌려 줍 니 다.
first string 2 에서 string 1 이 처음 나타 난 위 치 를 되 돌려 줍 니 다. string 1 이 나타 나 지 않 으 면 되 돌려 줍 니 다 - 1
last 와 first 는 반대 입 니 다.
trim string 1 에서 시작 과 끝 이 string 2 에 나타 난 문 자 를 삭제 합 니 다.
tolower 는 string 1 의 모든 문 자 를 소문 자로 변환 한 새 문자열 을 되 돌려 줍 니 다.
toupper 는 string 1 의 모든 문자열 을 대문자 로 변환 한 문자열 을 되 돌려 줍 니 다.
length string 1 의 길 이 를 되 돌려 줍 니 다.
예:
string length$qian; #변수 qian 의 길 이 를 되 돌려 줍 니 다.
6. 디지털 조작: tcl 에 string 형식의 변수 가 하나 밖 에 없 기 때문에 숫자 를 조작 하여 연산 하려 고 할 때 tcl 은 incr 와 expr 두 개의 조작 수 를 제공 합 니 다.
incr 의 기본 용법 은:
incrvariable integer (variable 은 숫자 여야 합 니 다)
예 를 들 어 나 는 숫자 하 나 를 3 으로 추가 할 것 이다.
set a 3;
incr a 3; #a 에 3 을 더 하고 3 을 줄 이려 면 incr a – 3 입 니 다.
기본 incr a 는 a++ 와 같 습 니 다. 즉, 자체 가 1 증가 한 다 는 뜻 입 니 다.
expr 의 기본 문법 은:
expr functionnumber
expr 는 더욱 복잡 한 조작 을 제공 하기 위해 설 계 된 문법 입 니 다. 예 를 들 어 연산 곱셈 법 등 입 니 다. 산술 작업 을 수행 할 때 expr 명령 을 산술 작업 전에 두 어야 합 니 다. 예 를 들 어:
set a 20; set b4;
set c [expr$a/$b]; #이때 c 의 값 은 5 입 니 다.
그 밖 에 expr 는 일부 함수 와 반환 값 을 다음 과 같이 식별 할 수 있 습 니 다.
abs (x) x 의 절대 값
round (x) x 반올림 후 얻 은 정수
사인
…………………………………..
예 를 들 어:
set a [exprsin (0.3)];\# 0.3 을 계산 하 는 사인
7. 전의
tcl 에서 {} 을 사용 하여 전의 가 필요 한 문자열 을 묶 을 수 있 습 니 다. 예 를 들 어:
set a 5;
set b {$a}; #이 때 b 의 값 은 5 가 아 닌 '$a' 입 니 다.
8. 흐름 제어
if 흐름 제어, 기본 문법:
if {표현 식} {
#연산
} else {
#기타 연산;
}
주의해 야 할 것 은 if... else, if... elseif... 중의 else 입 니 다. elseif 는 if 의 뒤에 있 는 {와 같은 줄 에 있어 야 합 니 다.
switch 제어 흐름: 기본 문법:
switch $x {
수치 1 {조작 1;}
수치 2 {조작 2;}
}
9. 순환
tcl 은 세 가지 순환 명령 을 제공 합 니 다. 각각 for, foreach, while 입 니 다. 또한 tcl 은 두 개의 순환 제어 명령 을 제공 합 니 다. 주의: 이 세 명령 의 시작 괄호 는 세 개의 명령 과 같은 줄 이 어야 합 니 다.
1. while 기본 문법: while {조건} {프로그램 블록}
2. foreach 는 하나의 변 원 에서 순환 하고 매번 그의 순환 체 를 실행 합 니 다. 기본 구조: foreachvariable {items} {block}
이 곳 의 variable 는 변수의 이름 으로 block 에서 사용 하기에 편리 합 니 다. 예 를 들 어:
foreach element{0 m n b v} {
switch$element {
# 요소 의 값 을 판단 하 다
}
}
3. for 는 가장 자주 사용 되 는 순환 입 니 다. 기본 구 조 는: for {initialization} {condition} {increment} {body} 입 니 다.
예 를 들 어: for {set i 0} {$i < 10} {incr i} {puts $i;} #0 에서 9 까지 인쇄 합 니 다.
프로그램 예시
# add a member function call "greet"
Class mom
mom instproc greet {} {
$selfinstvar age_
puts"$age_ year old mom say: How are you doing?"
}
# Create a child class of "mom" called"kid"
# and overide the member function "greet"
Class kid -superclass mom
kid instproc greet {} {
$selfinstvar age_
puts"$age_ year old kid say: What's up, dude?"
}
# Create a mom and a kid object, set each age
set a [new mom]
$a set age_ 45
set b [new kid]
$b set age_ 15
# Calling member function "greet" of eachobject
$a greet
$b greet