说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Crystal:一个类似于Ruby语法的编程语言

HTML文档下载 WORD文档下载 PDF文档下载
Crystal是一个开源的、类似于Ruby语法的编程语言,支持静态类型检查,可在Crystal内通过代码绑定调用C代码等等。有开发者称其真的酷毙了。

Crystal是一个开源的、类似于Ruby语法的编程语言,其特性如下:

  • 类似于Ruby的语法;
  • 支持静态类型检查,但无需指定变量类型或方法参数;
  • 可在Crystal内通过代码绑定调用C代码;
  • 在编译时进行代码评估和生成,避免了公式化的代码;
  • 编译后的代码是高效的本地码。

Crystal语法:HelloWorld

在Crytal中经典的Hello World程序代码是:


采用面向对象思路的写法是:

采用块思路的写法是:



尽管不同写法得出的程序性能各有差异,但幸好这些写法都是具表达力的。要运行Hellow World程序,请先安装好相关程序

然后把Crystal代码保存为hello.cr文件,启动控制台后键入以下命令:


Crystal特性综述

高效代码生成

Crystal是非解释型语言,没有虚拟机,由LLVM编译为机器代码。你不必指定变量类型,实例变量或方法参数,与静态编译语言类似;Crytal可自行判断该采用什么类型。

多类型变量

可以不指定变量类型。如果变量被指派了多种类型,在编译时变量类型是包括所有类型的。在运行时时变量类型才是唯一的。


可以通过a.is_a?或a.responds_to?来检查类型。



方法

Crystal中,方法是可以重载的,重载依据是参数个数,类型限制及方法的使用与否。


进行C绑定

可在Crystal中进行C代码绑定,例如以下的SDL绑定:


未来特性展望

  • 提供高效的,并行的垃圾回收器;
  • 提供类似于Erlang和Go的并发原生处理功能;
  • 更好的元编程方式;
  • 提供结构体类型,除了进行C代码绑定,还能编写更有效的封装代码和更少的内存占用;
  • 元组,命名元组和参数。
Hacker News上开发者对Crystal的精彩评论:

Habosa:我对一个有如此良好文档支持的新语言所深深震撼了,其技术博客有很多完整的里程碑式文章。

Arikrak:Ruby如此相似的目的是什么呢?难道是能够直接运行Rails?我对此充满期待。

SomeCallMeTim:它真的酷毙了!如果能够在Windows平台上能够更高效地运行例如C/Go,就更加完美了。

文章来自:crystal-lang.org

keydown(fn) -JQuery API keypress(fn)-JQuery API keyup(fn)-JQuery API load(fn)-JQuery API mousedown(fn)-JQuery API mousemove(fn)-JQuery API mouseout(fn)-JQuery API mouseover(fn)-JQuery API mouseup(fn)-JQuery API one(type,data,fn)-JQuery API ready(fn)-JQuery API resize(fn)-JQuery API scroll(fn)-JQuery API select(fn)-JQuery API select()-JQuery API submit(fn)-JQuery API submit()-JQuery API toggle(even,odd)-JQuery API trigger(type)-JQuery API unbind(type,fn)-JQuery API unload(fn)-JQuery API Effects特效-JQuery API animate-JQuery API fadeIn(speed, callback)-JQuery API fadeOut(speed,callback)-JQuery API fadeTo(speed,opacity,callback)-JQuery API hide(speed,callback)-JQuery API hide()-JQuery API show(speed,callback)-JQuery API show()-JQuery API slideDown(speed,callback)-JQuery API 一个ComboBox问题! 招聘美工及网页制作 用BDE的程序怎样在没有delphi的机器上运行? 有关datagrid的字段显示顺序问题 我的U盘有问题,想请教下大家;) 怎么转换MP3文件的比特率? 如何屏蔽最小化,最大化,以及关闭按钮 招聘美工及网页制作 C语言和汇编语言联合编译的问题 创建视图时,遇到一个表关联的问题:请教各位兄弟姐妹 请教如何让DBGird的最后一行的结果为上面全部对应记录的和? 求助子段合并的查询语句 Struts Struts 请问没人解答的问题如何处理? 结帖还是删除? 请教 数据库中的表与自由表的转换? 求助,在IE中无法打开word文件!!!急!!!! 高手帮我!!! 在WINDOWS的标准TREEVIEW中点右键如何得到点击的坐标? 如何把oracle中的数据结构导入access中去? 请问odbc方式和OLEDB方式有什么区别? 100询问:修改boot.ini仍无法实现双重启动. websphere的问题(1)? 我是第一次使用域.为什么无法在域控制器里增加用户?help me! 求助:模板的连接问题 strust 请问:哪里有人民邮电出版社的《个体软件工程》下载 ?(有分送) 存储过程执行出错,请帮忙看看!急! 请问:在sybase中的设备大小的设定,有没有一个标准?? include问题,屡试屡败 请问怎么才能用最简单的方法把程序做成服务? 程序设计文档怎么写啊?求教 不好意思,一个简单的问题 websphere的问题(2)? 请问如何实现模式窗口,就是当打开子窗口主窗口不能操作,除非关闭子窗口,如果有这样的网页也行 关于清华出版社出版的“微软.NET程序设计系列”之《ADO.NET程序设计》的问题,大家来讨论一下 如何用程序实现光驱的弹入弹出? 在线等了,各位帮忙了!! 我运行了一个网络管理软件出现乱码?而别的程序都没有乱码? 对话框上面显示视图,怎么办? 一道四级题有一点不明白的地方,谢谢各位高手帮我解决一下困惑。。 websphere的问题? 在一个对话框CDialog类中访问窗体视图类CFormView中的函数发生错误? 有关简繁体转换的问题 怎么分离这个字符串 aa|bb|cc|dd| ASP连接Oracle9i的连接字符串是什么? 请教:EXCEL中使用VB进行串口编 websphere的问题(4)? 如何在自己写的类的属性、方法在被使用的时候显示一些相关信息? 高分:大侠们,帮我看一下这个设计思路对吗?(在线等待!) 初级问题:请问用ASP开发BS结构程序,应该选什么工具啊 文化产业核心层、外围层、相关层分别指什么 词语dan yi是怎么写的? 耽于幻想和虎视眈眈这两个词的dan的解释 陋室铭为陋室作铭,为什么要从山水仙龙写起?还有 这种表现手法是什么? 七夕节有多久的历史? 一千石的高官,石这个字怎样念,河南大学教授王立群念shi..但我认为在这里他是一个量词,应该念dan.马未都是个文字高手,但又不知道怎样与他联系.所以, 七夕节有多久的历史了? 七夕有多久的历史了? 获得第一或者说在什么方面赢得金牌用英语怎么说越多越好 猪门酒肉臭,路有冻死骨. “猪门酒肉臭”的下一句是什么? 张德江会见蒙古国总理阿勒坦呼亚格杨晶会见古巴国务委员会执行秘书美国5岁男童趁保姆睡着把玩其手枪误将新车牌背着3年前的旧违章 杭州车管所中国第七个沿海整车进口口岸宁波梅山启安倍反驳小泉言论 称日本现在承诺零核日本男子砍伤出轨妻子 案发前同\"情纽约学前班年费花销逾2亿 应由谁支付强台风再次登陆日本 伊豆大岛全岛发布美国报告称纽约无家可归家庭与个人再创旧金山拟耗资数十亿美元改建饮用水及排一汽马自达王者归来,阿特兹驭世驾临!杭州和宏达两队升甲注意几个小问题下一篇让“不快乐劳动”早日走开!七嫌疑人被刑拘王老吉解密舌尖上的《平衡》探寻中国美食背后的“敢·爱”男子家中挖地窖囚禁前妻半个月任正非接班人或是团队冰爽蔬菜,解初夏闷热灵霸大陆异星闪白袍军神联盟公敌情谊结探行傲世骄雄无限之小翟无敌异世风云梦青春花麒麟争霸蔡氏古民居旅游通淮关岳庙旅游清净寺旅游铜佛寺旅游元妙观旅游海滩公园旅游塔山旅游湖南省第一师范学校旅游藏兵洞旅游明长城遗址旅游黄河军事文化博览园旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘