站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Scheme
”(章节)
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
==Scheme对象绑定、赋值和函数定义== let 表达式语法糖果 <pre> 语法: (let ((var val) ...) exp1 exp2 ...) </pre> <font color="red">说明:let 表达式是 lambda 表达式的语法糖果,即:(let ((var val) ...) exp1 exp2 ...),为 ((lambda (var ...) exp1 exp2) val ...)</font> :示例: (let ((x 2) (y 3)) (+ x y)) ; 先绑定: x=2, y=3,再计算x+y的值,结果为5。注意 (x 2) 和 (y 3) 外还有一层括号。 :更多的示例: <pre> (let ((f +)) (f 2 3)) ; return 5 (let ((f +) (x 2)) (f x 3)) ; return 5 (let ((f +) (x 2) (y 3)) (f x y)) ; return 5 </pre> ;用 define 绑定对象和 set! 赋值 :语法:(define var exp) , (set! var exp) :说明:define绑定的对象在当前作用域中有效。define 和 set! 的区别是[[define]]既能赋值又能定义变量,而set!只能对已经定义的变量赋值。 :示例: <pre> (define a 1) a ; return 1 (set! a 2) a ; return 2 (let ((a 3)) a) ; return 3 a ; return 2 (let ((a 3)) (set! a 4) a) ; return 4 a ; return 2 (let ((a 3)) (define a 5) a) ; return 5 a ; return 2 (set! b 1) ; 错误,b尚未定义 </pre> ;lambda 表达式和函数定义 :语法:(lambda (var ...) exp1 exp2 ...) :说明:[[lambda]] 表达式用于定义函数。var ... 是参数,exp1 exp2 ...是函数的执行 部分。通常需要结合局部定义 let 或者全局定义表达式 define,再进行函数调用。 :示例: <pre>((lambda (x) (+ x x)) (* 3 4)) ; return 24</pre> :说明:先用lambda定义了函数,参数是x,函数返回x+x。同时该语句也完成了函数调用,实参是 12 (等于3*4),因此返回值是 24 (等于12+12)。 在let表达式中定义函数。 Scheme语言中,函数作为一种数据类型,通过赋值语句,将lambda表达式赋值给相应的函数。 :示例: <pre> (let ((double (lambda (x) (+ x x)))) (list (double (* 3 4)) (double (/ 99 11)) (double (- 2 7)))) ; return (24 18 -10) </pre> :说明:let表达式将lambda定义的函数赋值给double,参数是x,返回 x+x。接下来分别三次调用 double 函数,并将结果以列表形式返回。list 表达式负责生成列表。 用define全局定义表达式来定义函数。 用 let 定义的函数只能在 let 表达式中有效,如果想定义在整个程序中有效的函数定义,需要用到全局定义表达式——define。 :示例: <pre> (define double (lambda (x) (+ x x))) (double 12) ; return 24 (double (* 3 4)) ; return 24 </pre> :说明:define表达式定义了全局有效的函数 double。两次调用double的返回值都是 24。 定义函数的简写 用 define 定义的函数的语法可以简化,即将 lambda 去掉。即将语法 <pre> (define var0 (lambda (var1 ... varn) e1 e2 ...)) 简写为: (define (var0 var1 ... varn) e1 e2 ...) </pre> :示例: <pre> (define (double x) (+ x x)) (double 12) ; return 24 (double (* 3 4)) ; return 24 </pre> :说明:本例是前一个例子的简化版本。更简介,明了。
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)