Tekil Mesaj gösterimi
Alt 02 Nisan 2009, 01:01   #16
Çevrimdışı
SaW
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: TCL scripting öğrenmek istiyorum




@snapcstrike

O tarz örneklendirmeleri şu aşamada vermek için henüz erken. Komutların açıklamalarını artırdıktan sonra söylediğin şekilde örnekler verebiliriz, o aşamaya kadar @Siber55'in istediği gibi yardımlar istemen daha doğru olacaktır.

@Snet

Sanırım sen konudaki ilk postu okumamışsın. Seni ilk postu okumaya, yetkili arkadaşları da @Snet'in postunu silmeye davet ediyorum.

@Siber55

Tam olarak istediklerimiz budur. Bu şekilde sorular sorarsanız bizler de gayet zevkle yardımcı olmaya çalışırız. Şimdi sorduğun üç komutu örneklerle açıklamaya çalışalım.

lrange

lrange komutu ingilizce range (dağılım, sıra, hatta biraz daha zorlarsak aralık ve mesafe) kelimesinden gelmektedir. Elimizdeki bir değerin kaç kelimeden kaç ayrı değerden oluştuğunu anlamamıza yarar.

lrange "a b c d e f"
değeri 5 olarak dönecektir.

lrange "0 1 2 3 25 125 8"
değeri 7 olarak dönecektir.

lrange "{1 2 3} {8 9} 2 a {x y}"
değeri 5 olarak dönecektir. içerisindeki süslü parantezlerin herbirini birer kümecik ve tek bir eleman olarak sayar. Bu örneği biraz daha geliştirelim.

lindex bir komutumuz daha vardır. Elimizdeki verilen belirtilen nolu değerini görmemize yarar. İlk değer 0'dan başlar (bu çok önemli!). Örnek verelim:

lindex "a b c d e" 0
verilen "a b c d e" değerinin 0 nolu elamanını kasdeder ve o da a'dır.

lindex "ahmet mehmet hasan hüseyin" 2
Bu değerin 2 nolu elemanını kasdeder ve o da hasan'dır.

Şimdi lindex ve lrange komutlarını iç içe kullanalım..

lrange [lindex "{1 2 3} {8 9} s a {x y}" 0]
ilk önce iç kısıma bakarız. lindex ile bize gelen değer içerideki dizinin 0 numaralı elamanı olan {1 2 3} değeridir. Daha sonra ise bu değerin dağılımını lrange komutuyla soruyoruz. O da bize 3 cevabı olarka dönecektir.

lrange'in mantığı budur. Örnekler çoğaltılabilir. Her zaman söylediğim gibi botunuza konsoldan bağlanarak bu örnekleri kendiniz yapınız ve cevaplarını görünüz. Böylece daha kalıcı olacaktır. Peki nasıl yaparsınız bunu?
Bota konsoldan bağlantıktan sonra komutların başına .tcl yazarak geri kalanını yazmanız yeterli olacaktır. Örnek:

.tcl lrange "ab cd ef gh"
gibi..

Şimdi gelelim append komutuna..

append

append komutu set, var, incr gibi komutlarıda olduğu gibi elimizdeki değişkene değerler atamaya yarayan daha farklı bir işlevi olan bir komuttur.

set x a
ile $x değişkeninin değerini a olarak atadık.

append x b
burada ise $x değişkenine b değerini arasına boşluk bırakmadan ekledik. Yani $x değişkenin değeri artık ab'dir.

append x c
artık $x değişkeni abc haline gelmiştir.

append x 1
$x değişkeni abc1 haline gelmiştir.

Arasına boşluk bırakmak istersek ne yapmamız lazım?

append x " m"
Şeklinde yazdığımızda m'den önce bir de boşluk bıraktığımız için artık $x değişkeninin değeri "abc1 m" şeklini almıştır. İşte burada append komutuna çok benzeyen ve lappend olarak adlandırılan farklı bir komut bu işlevi görür. Eklenen değerler arasına kendisi boşluk koyar. Örnek verelim:

set x a
$x
değerini a olarak belirledik.

lappend x b
$x değişkeni artık "a b" halini aldı.

lappend x c
$x değişkeni "a b c" değerini aldı.

Şimdi bir diğer komut olan foreach komutuna geçelim.

foreach

foreach komutu loop (döngü) olarak kullandığımız komutlardan birisidir. Yukarıda bahsettiğimiz diğer komutlara nazaran biraz daha karışık bir komuttur. Tarifini ise, "eldeki verinin her bir elemanını döngü her gerçekleştiğinde belirtilen değişkene atar" şeklinde yapabiliriz. Eldeki verilerin her biri sırasıyla atandığında döngü kendiliğinden sonlanır. Eğer bitmeden herhangi bir anda sonlandırmak istiyorsak break, belirli bir değere geldiğinde o değeri atlayıp başa dönüp bir sonraki değerden devam etmesini istiyorsan continue komutlarını kullanırız. Bu iki komutu daha sonra başka konularda ayrıca açıklayacağım. Örneklendirdiğimiz zaman biraz daha iyi anlaşılabilir.

foreach x "a b c d e" { putlog "Şuan x değeri : $x " }
Toplam 5 eleman var. Döngü 5 kere başa dönecektir. $x değeri her defasından bir sonraki değeri alacaktır. Bize cevaplar şu şekilde dönecektir.
Şuan x değeri : a
Şuan x değeri : b
Şuan x değeri : c
Şuan x değeri : d
Şuan x değeri : e


Bunun en basit anlatımı budur. Örnekleri kendiniz konsoldan denerseniz daha iyi anlamanıza yardımcı olacaktır.

foreach komutuyla aynı anda birden çok değere de atama yapılabilir. Örnek verelim:

foreach {x y z} "a b c" { putlog "$x - $y - $z" }
Burada ise "a b c" değerlerini bir kerede sırasıyla $x $y ve $z değişkenlerine atadık. Böyle bir sorguda bize cevap a - b - c olarak dönecektir.

foreach ile ilgili örnekleri çoğaltıp kafanızı karıştırmak istemiyorum. Şimdilik genel mantığını bilmeniz yeterli olacaktır. Örnekleri kendiniz çoğaltırsanız daha iyi anlayacaksınız.

Kolay gelsin.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet