Tcl学习之--表达式
l 数值操作数
表达式的操作数一般是整数或实数。整数可能是十进制。二进制,八进制或十六进制。
比方以下同一个整数
335 --> 十进制
0o517 --> 八进制
0x14f --> 十六进制
0b10100111 --> 二进制
处理0开头的十进制整数最安全的方法是使用scan命令.
以下就是非经常常使用的样例:
l 操作符及其优先级别
Tcl与C类似。同样的优先级符从左到右进行计算。比方:10-4-3与(10-4)-3结果是一样的,但假设4*2 < 7,计算结果为0,由于*的优先级别大于>,事实上那么多操作符,根本不可能记住,最保险。也是最可靠的就是用()来完毕自己的意图。
l 算术操作符
+, -, *, /, %, 及**
l
关系操作符
<; <=; >=; >; ==; !=
l 逻辑操作符
逻辑操作符 &&, || , 以及!
($x > 4) && ($x < 10)。当中每一个操作符结果都是0或1
A && B: A与B同一时候为真,方为真
A || B : A与B仅仅要有一个为真。就为真
!A : A为假,则为真
Tcl中总是用1代表真,0代表假,在Tcl中:
false, no以及off表示假
true, yes以及on表示真
NOTE: 这些字符串不区分大写和小写.
l 按位操作符
Tcl中提供了6个操作符. &, |, ^, << , >>,以及~
& : 按位与
| : 按位或
^ : 异或
<<: 按位左移
>>: 按位右移
~ : 取反符号
l 三元操作符
expr {($a < $b) ? $a : $b}
$a < $b为条件
1) 假设条件为真: 则选择$a
2) 假设条件为假: 则选择$b
l 数学函数
Tcl表达式支持数学函数,如sin(),cos(),abs(),exp()等函数。到时候请查阅文档就可以.
l 替换
表达式操作数的替换有两种方式:
方式一: 普通的Tcl解析器机制
方式二: 通过表达式处理
1. 首先当表达式遇到$,它自己会进行一次变量替换,把变量x的值传给sin.
2. 其次将2*sin($x)作为參数传递给expr.
NOTE: 最好总是把表达式用{}括起来,即使是在使用expr命令的时候,原因一:Tcl处理括起来的表达式效率,大大高于没有括起来的表达式。
原因二:避免代码中出现一些难以捕捉的安全漏洞.比方说:
set x [expr $input - 2]
假设实用户输入[format c:\],Tcl解析器直接会将这个字符串作为input变量,从而格式化C盘。
l
字符串操作
Tcl表达式接收字符串。通常是以下两种方式
方式一: 用双引號
方式二: 用大括号
所以像以下的表示是错误的:
l 列表操作
Tcl 支持两个列表操作符,in 与
lsearch –exact
Tcl学习之--表达式的更多相关文章
- Tcl学习之--语法|变量
[语法|变量] l 脚本.命令和单词 Tcl提供了大约100条命令.Tk提供了另外几十条,脚本包括一条或多条,通过换行符或分号分隔开. set a 12 set b 23 也能够写成一行: set a ...
- Java8 新特性学习 Lambda表达式 和 Stream 用法案例
Java8 新特性学习 Lambda表达式 和 Stream 用法案例 学习参考文章: https://www.cnblogs.com/coprince/p/8692972.html 1.使用lamb ...
- tcl学习
variables(变量) 语法:set varname value 例如:set a 5 注意:大小写敏感,任意长度,任意字符 使用之前无需申明 substitution(替换) 1 变量值替换 $ ...
- JavaScript学习笔记-表达式和语句
表达式和语句 eval( ) 只有一个参数 参数非字符串时,直接返回这个参数: 参数为字符串时,它把字符串当成JavaScript代码进行编译,编译失败则抛出语法错误,编译成功则执行代码,并返回最后一 ...
- JavaWeb学习笔记——表达式语言
使用表达式语言,可以方便地访问标志位(JSP中有page(pageContext).request.session和application4种标志位)中的属性内容,可以避免出现许多的Scriptlet ...
- Angular JS学习之表达式
1.Angular JS使用表达式把数据绑定到HTML: 2.Angular JS表达式写在双大括号中:{{expression}} **Angular JS表达式把数据绑定到HTML,这与ng-bi ...
- 学习lamda表达式
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.L ...
- Clojure学习:表达式与函数
Clojure是一门Lisp方言——确切地说,是一门JVM上的Lisp方言——也是一门非纯粹的函数式语言. Clojure理所当然地秉承了Lisp“代码即数据( code is data! )”的设计 ...
- TypeScript 学习二 表达式和循环
表达式: 1,箭头表达式:将function用箭头代替,参数相应进行处理: 用来声明匿名函数,消除了传统匿名函数的this指针问题: 1) 例:简单的方法体为单行的方法,此时不需要大括号和return ...
随机推荐
- ubuntu清华源【转】
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 可以选择ubuntu的版本更新源.
- AJAX复习笔记
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可况下更新以使网页实现异步更新. 工作原理: AJAX是基于现有的Internet ...
- Vue2.0框架搭建基础操作及目录说明
一.概述 vue.js是一套构建用户界面的渐进式框架.vue采用自底向上增量开发的设计.vue的核心库只关心视图层,非常容易学习,非常容易与其它库和已有项目整合.vue完全有能力驱动采用单文件组件和v ...
- ubuntu-设置分辨率
xrandr -s 1440x900 -r 60 前提是,分辨率选项中有对应的设置选项.
- 根据项目类型导入Excel文件到不同数据库
前提:如果您要针对不同的业务做数据导入,可以参考下这个项目,这个项目的原理就是根据文件名进行区分,然后导入不同的数据表.下面我就写个Demo演示下: 学生表-- 主键,学生姓名,学生年龄,学校归属 教 ...
- C-C语言概述
1.数据+算法=程序. 2.C语言程序是由一个或多个函数组成的,函数是由语句组成的,语句是由关键字,标识符,运算符,数据组成的:语句可分为:声明语句,赋值语句,控制语句,函数语句,空语句. 3.#in ...
- Canvas实现环形进度条
Canvas实现环形进度条 直接上代码: <canvas width="200" height="200" >60%</canvas> ...
- 关于用户禁用Cookie的解决办法和Session的图片验证码应用
当用户通过客户端浏览页面初始化了Session之后(如:添加购物车,用户登陆等),服务器会将这些session数据保存在:Windows保存在C:\WINDOWS\Temp的目录下,Linux则是保存 ...
- 深入理解DIP、IoC、DI以及IoC容器(转载)
<转载的这个up的其他的文章也很nice> 这几个词第一眼看,懵逼,第二眼看,更特么懵逼..... 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序. 其中,OOD有一 ...
- python爬虫:爬取凤凰指数
在知乎上看到的这个问题,讲讲我爬取过程中遇到的问题: 1.循环爬取其他页面,在其他项目中用循环一般可以搞定,可是这个,第一页和第二第三页的表格是不同的,所以要重新写规则,我懒,写了第一页后,就不想在写 ...