最近发现《Practical Ruby Projects》用rparsec来讲解怎么在Ruby里构建lisp。于是假公济私地用公司的账户订购了一本,也算给自己捧场。
书拿到,打开一看,好么,被批评了
引用
Caution: For such an excellent library, rparsec plays very fast and loose with namespaces. Its parser classes are installed directly into root namespace. As a library author, try not to do this.
赶紧自己把代码下载下来一看,可不是么,所有的类都在顶层namespace。汗啊!
还是太习惯于java的方式了,潜意识中总是觉得在什么地方放一个"package org.codehaus.rparsec"就好了。结果ruby没这东西。
作为我的第一个(也是迄今为止唯一一个)ruby项目,很多惯用法都不知道。记得当时写完代码,到处问别人:我这些源文件应该怎么组织啊?好像不是跟java似的,有"package"的概念?有classpath?用org/codehaus/rparsec这种方式?旁边的人都是rails的用户,基本上人家告诉说有个rails的咒语怎么念就跟着怎么念的那种,自己都没写过库,所以也都含糊,反正后来凑合着给整上了,到现在也不知道整得对不对。
这个namespace好像一度曾经想过,但是当时觉得“以后问别人怎么弄吧,先写代码去也”,后来也就忘记了。
不过到底应该怎么搞namespace呢?这样?
module org
module codehaus
module rparsec
class Parser
...
end
end
end
end
牙磕!
这样?
module RParsec
class Parser
...
end
end
好点,但是还是不喜欢每个源文件上来就全缩进两格。就没有java的"package RParsec"这类咚咚?Ruby语法这么灵活,应该会有吧?
哎,下一版本如果要改namespace,就要破坏向后兼容性了。好在还没有太多用户呢。
对了,如果你读过这本书,作者对rparsec的使用有一点点偏差,他用"alt(parser1, parser2)" 这个组合子,但是实际上这个alt是一个高级选项,应该用"parser1 | parser2"这个更直观,更不容易出错的组合子,这样书里面提到的一个陷阱就不存在了。
分享到:
- 2008-03-04 02:37
- 浏览 4525
- 评论(0)
- 论坛回复 / 浏览 (0 / 1931)
- 查看更多
相关推荐
设置打开-> github-> yandexdataschool / pracical_rl-> {分支名称},然后选择所需的任何笔记本。 在本地计算机上(推荐)。 替代方案: 。 附加材料 教学大纲 该课程提纲是近似的:授课的顺序可能略有不同,有些...
TAC顶刊报告:'多智能体分布式自适应一致性控制(含纯一致性与leader-follower一致性)'及其Matlab复现代码.pdf
SVPWM仿真与基于DSP28335的PIL(处理器在环)仿真模型验证算法可行性与实时性的实践研究.pdf
VSG仿真、并网与离网运行仿真、预同期并网控制及虚拟同步机逆变器仿真.pdf
SSA-RF与RF神经网络多元回归预测(Matlab 程序及运行指南).pdf
Simulink微网多逆变器下垂控制仿真模型:固定与可调的下垂系数、SVPWM与算法控制的并联运行.pdf
电磁场与电磁波28
SSA-CNN-LSTM时间序列预测(Matlab)_ 麻雀算法优化卷积长短期记忆网络.pdf
C++知识点汇总.md.zip
T型逆变器仿真(SPWM)Matlab 2021a:LCL滤波器下纯阻性负载的五电平波形仿真.pdf
STM32G431 FOC线性磁链观测器无感FOC驱动资料(非VESC、非ST电机库生成,支持直接零速闭环启动及电位器转速控制)”.pdf
STM32F103 SAE CAN开放协议源码(含半年咨询费+中文注释及原理说明).pdf
Java项目springboot基于springboot的课程设计,包含源码+数据库+毕业论文
Simulink导弹制导系统仿真模型文件使用指南及视频讲解.pdf
内容概要:本文深入介绍了Caffe深度学习框架,涵盖其历史背景和发展、安装配置、卷积神经网络(CNN)的基础理论及其实现。具体内容包括CNN各个层级的工作原理、Caffe中的网络模型定义和训练方法、LeNet与AlexNet的实际运用、迁移学习及模型的性能优化等。通过详细的实战操作演示,文章帮助开发者掌握在Caffe上搭建CNN的方法和技术。 适合人群:从事计算机视觉领域的研究人员和工程师,尤其是想要深入了解卷积神经网络和掌握Caffe框架的人群。 使用场景及目标:本文适合作为学习材料用于理解卷积神经网络的概念和工作机制,指导初学者和有经验的开发者如何利用Caffe实现图像识别、目标检测等任务;并且帮助读者掌握模型训练和性能优化的相关技能。 其他说明:文中提供了大量代码片段与实例讲解,方便读者理解和实践;此外还对比了几款主流深度学习框架的优势,辅助决策选用合适的开发工具。
1、文件说明: Centos8操作系统vim-editorconfig-1.1.1-1.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf vim-editorconfig-1.1.1-1.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
VMD信号分解算法:VMD功率分解与滚动轴承故障检测.pdf
STM32 IAP固件升级程序源代码(串口环形队列接收模式实现固件升级程序).pdf
VSC直流输电仿真案例:两电平结构换流站与双环控制的应用.pdf
STM32高压无感FOC全功能版本:风机控制与独特处理方式.pdf