作者:Matthew Flatt
原文:https://docs.racket-lang.org/quick/index.html


本教程使用一个Racket的一个画图库对Racket做一个简短的介绍。画图库包含了一些有趣的例子,尽管你并不打算使用Racket进行艺术创作。毕竟,一图胜千言。

我们假定你会用DrRacket运行这些示例。使用DrRacket是直观感受Racket语法的最快方式,虽然实际上你可能用的是Emacs,vi,或其他编辑器。

1 准备

下载Racket,安装,然后打开D人Racket。

2 设置

DrRacket文档在此。

首先我们需要导入一个用来制作幻灯片的库,其中有一些画图函数。将下面的代码复制到DrRacket的代码编辑区。

#lang slideshow

然后点击运行按钮,你将看到光标移动到下方的交互区。

如果你之前使用过DrRacket,你可能需要先通过语言|选择语言菜单设置语言,然后点击运行。

3 开始

当你在交互区的>后输入表达式然后回车,DrRacket就会进行求值并打印结果。表达式可以仅仅是一个值,比如数字5或字符串"art gallery"

> 5
5
> "art gallery"
"art gallery"

表达式也可以是函数调用。调用函数需要用括号包裹,参数放在函数名后用空格分隔,如下:

> (circle 10)
⚪

circle函数的结果是一张图片,就像打印数字或字符串一样。circle的参数是圆的大小(像素)。就像你能猜到的那样,也有rectangle函数接受两个参数:

> (rectangle 10 20)
▯

试着给circle两个参数,看看会发生什么:

> (circle 10 20)
circle: arity mismatch;the expected number of arguments does not match the given
numberexpected: 1 plus optional arguments with keywords
#:border-color and #:border-widthgiven: 2arguments...:1020

DrRacket用红色高亮出错的表达式(本文未展示)。

除了基本的构造函数circlerectangle,也有hc-append函数用来连接图片。示例如下:

> (hc-append (circle 10) (rectangle 10 20))
○▯

中划线是函数名的一部分。函数名中h的含义是水平拼接,c表示垂直居中。

想要获取帮助或者查看更多函数,将光标移至hc-append然后按F1,DrRacket将为你打开新天地。

如果你是阅读原文,可以直接点击链接进行跳转。

4 定义

如果要重复使用一个圆形或方形图片,就需要给他们命名。回到代码编辑区输入以下代码。

#lang slideshow
(define c (circle 10))
(define r (rectangle 10 20))

点击运行,现在你可以直接使用cr了:

> r
▯
> (hc-append c r)
○▯
> (hc-append 20 c r c)
○ ▯ ○

如你所见,hc-append函数可以接收任意数量的图片参数,并且在图片参数前接受一个可选的数字参数,表示图片之间的间隔大小。

我们可以在交互区求值编辑器写的表达式。通常编辑区用来书写需要保存的代码,交互区用来测试和debug。

让我们来添加一个函数定义。函数也是用define定义,就像定义变量一样,不同的是函数名和参数需要用括号包裹,函数名和参数,以及参数与参数之间用空格分隔:

(define (square n); A semi-colon starts a line comment.; The expression below is the function body.(filled-rectangle n n))

函数定义决定了如何调用函数:

> (square 10)
■

同样,定义也可以在交互区求值,表达式也可以写在编辑区。程序运行时,编辑区表达式的值会显示在交互区。从现在开始,我们的示例会把定义和表达式写在一起,你可以在你喜欢的地方写。但是建议将定义写在编辑区。

5 临时绑定

define关键字可以用来创建临时绑定。比如它可以用在函数体内:

(define (four p)(define two-p (hc-append p p))(vc-append two-p two-p))> (four (circle 10))
◯◯
◯◯

通常,Racker程序员使用letlet*表示临时绑定。好处是let可以用在任何需要表达式的地方,并且可以一次绑定多个变量:

(define (checker p1 p2)(let ([p12 (hc-append p1 p2)][p21 (hc-append p2 p1)])(vc-append p12 p21)))> (checker (colorize (square 10) "red")(colorize (square 10) "black"))
												

快速:通过画图了解Racket相关推荐

  1. 带你十分钟快速入门画图绘图作图神器 Matplotlib_各种画图小结

    20220612 excel也可以画图 20220525 U-net架构(例如最低分辨率为32x32像素).每个蓝框对应一个多通道特征图.通道的数量在方框的顶部表示.x-y尺寸在盒子的左下边缘.白盒代 ...

  2. 干货 | 算法和编程面试题精选TOP50!(附代码+解题思路+答案)

    作者 | javinpaul 编译 | 王天宇.Jane 整理 | Jane [导读]之前我们给同学们推荐了很多关于 Python 的面试资源,大家都表示很有用.这次营长表示要翻 Java 的牌子啦~ ...

  3. 计算机绘图要学吗,如何学好计算机绘图 AUTOCAD 软件

    摘要:随着计算机技术的飞边发展,计 算机辅助设计已广泛 应用于工程技术的各个领域 .作为职业学校机械加工.数控技术应用专业的学生,能否熟练地掌握    AUTOCAD 软件,对其今后的专业发展和就业而 ...

  4. QuickStart\6.Mspaint

    从当前的allegro窗口下,快速启动"画图"程序.

  5. 使用计算机绘图软件首先要,如何学好计算机绘图 AUTOCAD 软件

    摘要:随着计算机技术的飞边发展,计 算机辅助设计已广泛 应用于工程技术的各个领域 .作为职业学校机械加工.数控技术应用专业的学生,能否熟练地掌握    AUTOCAD 软件,对其今后的专业发展和就业而 ...

  6. 基于GIS的配电系统图形编辑

    摘要:本文详细介绍了基于地理信息系统(GIS)的配电运行管理系统(DOM)中的图形编辑模块.针对当前国内配电网管理系统(DMS)中的数据难以统一和维护.开发周期长等难题,提出了行之有效的解决办法.通过 ...

  7. Python数据分析,“入门之路”三步曲

    前言 Python是一种面向对象.直译式计算机程序设计语言,由于他简单.易学.免费开源.可移植性.可扩展性等特点,Python又被称之为胶水语言.下图为主要程序语言近年来的流行趋势,Python受欢迎 ...

  8. Windows 启动服务命令大全

    描述: 在日常工作学习中,可能会常用到windows系统自带的计算器.记事本.画图等小工具,本文将介绍如何使用命令快速打开这些小工具. 1.快速启动画图工具 在以下三个地方输入画图工具命令:mspai ...

  9. 【Matlab编程】新手入门第七天

    MATLAB二维绘图 前言 1.数据图像绘制简介 1.1离散数据可视化 1.2连续函数可视化 2.二维图形的基本绘图命令 2.1二维图形绘制准备 2.2快速方程式画图 3.二维图形的修饰 3.1色彩. ...

  10. python做大数据分析入门_独家|Python数据分析入门指南 - 大数据123 | 大数据导航网...

    有一个朋友最近问到这个问题,我觉得把它公开出来对其他人也会有帮助.这是给完全不了解Python而想找到从零到一的最简单的路径的人的建议: 1. 在这里(https://www.continuum.io ...

最新文章

  1. CVPR 2022 | 华南理工提出VISTA:双跨视角空间注意力机制实现3D目标检测SOTA,即插即用...
  2. android 自定义图片容器,Android应用开发中自定义ViewGroup视图容器的教程
  3. 关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能
  4. 详解PHP spl_autoload_register()函数
  5. 检测你处于程序员的哪个层级
  6. python怎么显示分数_在Python中使用分数
  7. (转)WindowsPhone基础琐碎总结-----数据绑定(一)
  8. 解决 -- 代码没有问题时接口报错:Status Code: 404 Not Found
  9. html js 选择器,h.js - dom元素选择器
  10. python的框架django_Python框架Django高级内容,python
  11. python函数myproduct_OpenERP与Python 元编程
  12. mysql带入参的存储过程_MySql带参数存储过程()
  13. iOS创建苹果证书、制作p12证书流程
  14. 仿站小工具和小飞兔(扒取网站页面)
  15. ceph最低配置和硬件推荐
  16. 13.包装类和字符串
  17. thinkcmf图片上传七牛云不显示的问题(七牛图片后缀!watermark)
  18. 创新式开发探索(三) —— 反思自己的开发活动
  19. SpringMVC Web实现文件上传下载功能实例解析
  20. vue动态拼接图片路径、img地址拼接问题 [模板字符串]

热门文章

  1. 计算机毕业设计Java校友闲置书籍管理平台(源码+系统+mysql数据库+Lw文档)
  2. 为你的整轨APE音乐制作CUE文件(图文)
  3. 在Linux下刻录APE音乐
  4. tcc-transaction源码详解
  5. 单模光纤最大传输距离为多少_单模光缆的传输距离是多少?
  6. ip地址查询 免费 接口 linux 外网地址查询
  7. 【双轨公排】小公排+推荐奖+对碰奖+层碰奖+见点奖源码系统 演示网站介绍
  8. 黑苹果安装经验整理|再见丁小果
  9. 利用在线词典批量查询英语单词
  10. Flutter TextFiled去掉下划线