1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-08-13 18:24:39 +02:00

removing whitespace all over

This commit is contained in:
Gabriel Halley
2015-10-07 23:11:24 -04:00
parent a793d16e37
commit 960ee4a185
39 changed files with 679 additions and 679 deletions

View File

@@ -14,7 +14,7 @@ programming language. It can also be used as a portable C library, even in
cases where no scripting capability is needed, as it provides data structures
such as dynamic strings, lists, and hash tables. The C library also provides
portable functionality for loading dynamic libraries, string formatting and
code conversion, filesystem operations, network operations, and more.
code conversion, filesystem operations, network operations, and more.
Various features of Tcl stand out:
* Convenient cross-platform networking API
@@ -58,14 +58,14 @@ lighter that that of Lisp, just gets out of the way.
#! /bin/env tclsh
################################################################################
## 1. Guidelines
## 1. Guidelines
################################################################################
# Tcl is not Bash or C! This needs to be said because standard shell quoting
# habits almost work in Tcl and it is common for people to pick up Tcl and try
# to get by with syntax they know from another language. It works at first,
# but soon leads to frustration with more complex scripts.
# Braces are just a quoting mechanism, not a code block constructor or a list
# constructor. Tcl doesn't have either of those things. Braces are used,
# though, to escape special characters in procedure bodies and in strings that
@@ -73,7 +73,7 @@ lighter that that of Lisp, just gets out of the way.
################################################################################
## 2. Syntax
## 2. Syntax
################################################################################
# Every line is a command. The first word is the name of the command, and
@@ -83,13 +83,13 @@ lighter that that of Lisp, just gets out of the way.
# are used, they are not a string constructor, but just another escaping
# character.
set greeting1 Sal
set greeting1 Sal
set greeting2 ut
set greeting3 ations
#semicolon also delimits commands
set greeting1 Sal; set greeting2 ut; set greeting3 ations
set greeting1 Sal; set greeting2 ut; set greeting3 ations
# Dollar sign introduces variable substitution
@@ -126,11 +126,11 @@ puts lots\nof\n\n\n\n\n\nnewlines
set somevar {
This is a literal $ sign, and this \} escaped
brace remains uninterpreted
}
}
# In a word enclosed in double quotes, whitespace characters lose their special
# meaning
# meaning
set name Neo
set greeting "Hello, $name"
@@ -178,7 +178,7 @@ set greeting "Hello $people::person1::name"
################################################################################
## 3. A Few Notes
## 3. A Few Notes
################################################################################
# All other functionality is implemented via commands. From this point on,
@@ -193,8 +193,8 @@ set greeting "Hello $people::person1::name"
namespace delete ::
# Because of name resolution behaviour, it's safer to use the "variable" command to
# declare or to assign a value to a namespace. If a variable called "name" already
# Because of name resolution behaviour, it's safer to use the "variable" command to
# declare or to assign a value to a namespace. If a variable called "name" already
# exists in the global namespace, using "set" here will assign a value to the global variable
# instead of creating a new variable in the local namespace.
namespace eval people {
@@ -210,7 +210,7 @@ set people::person1::name Neo
################################################################################
## 4. Commands
## 4. Commands
################################################################################
# Math can be done with the "expr" command.
@@ -295,7 +295,7 @@ while {$i < 10} {
# A list is a specially-formatted string. In the simple case, whitespace is sufficient to delimit values
set amounts 10\ 33\ 18
set amounts 10\ 33\ 18
set amount [lindex $amounts 1]
@@ -339,7 +339,7 @@ eval {set name Neo}
eval [list set greeting "Hello, $name"]
# Therefore, when using "eval", use [list] to build up a desired command
# Therefore, when using "eval", use [list] to build up a desired command
set command {set name}
lappend command {Archibald Sorbisol}
eval $command
@@ -355,7 +355,7 @@ eval $command ;# There is an error here, because there are too many arguments \
# This mistake can easily occur with the "subst" command.
set replacement {Archibald Sorbisol}
set command {set name $replacement}
set command [subst $command]
set command [subst $command]
eval $command ;# The same error as before: too many arguments to "set" in \
{set name Archibald Sorbisol}
@@ -364,12 +364,12 @@ eval $command ;# The same error as before: too many arguments to "set" in \
# command.
set replacement [list {Archibald Sorbisol}]
set command {set name $replacement}
set command [subst $command]
set command [subst $command]
eval $command
# It is extremely common to see the "list" command being used to properly
# format values that are substituted into Tcl script templates. There are
# format values that are substituted into Tcl script templates. There are
# several examples of this, below.
@@ -422,12 +422,12 @@ proc while {condition script} {
# The "coroutine" command creates a separate call stack, along with a command
# to enter that call stack. The "yield" command suspends execution in that
# stack.
# stack.
proc countdown {} {
#send something back to the initial "coroutine" command
yield
set count 3
set count 3
while {$count > 1} {
yield [incr count -1]
}
@@ -435,12 +435,12 @@ proc countdown {} {
}
coroutine countdown1 countdown
coroutine countdown2 countdown
puts [countdown 1] ;# -> 2
puts [countdown 2] ;# -> 2
puts [countdown 1] ;# -> 1
puts [countdown 1] ;# -> 0
puts [countdown 1] ;# -> 2
puts [countdown 2] ;# -> 2
puts [countdown 1] ;# -> 1
puts [countdown 1] ;# -> 0
puts [coundown 1] ;# -> invalid command name "countdown1"
puts [countdown 2] ;# -> 1
puts [countdown 2] ;# -> 1
```