这是来自波兰人solnic.codes的帖子,大意如下:波兰语是一门非常难学的语言,它实际上被认为是世界上最难学习的10种语言之一。
在波兰,就像在许多其他国家一样,有些地区使用方言而不是“纯粹”的语言形式,所以在我的城市,我们有自己的方言。
编程语言也有方言,根据定义,编程语言方言是“语言的(相对较小的)变体或扩展,不会改变其内在性质”。
这种变化或扩展是如何实现的并不重要。
重要的部分是原始语言得到了扩展,它提供了更多的功能,而它的原始性质和行为保持不变。
Ruby是一种具有开放类的编程语言,即使是语言的核心功能也可以通过简单地向核心类添加新方法来扩展,例如String或Array.这使得创建自己的Ruby方言变得非常简单!DHH在创建RubyonRails框架时就利用了Ruby的这一独特功能。
这个框架的基础是一个名为ActiveSupport的库——一个核心Ruby扩展的大集合,它们共同创建了一个Ruby方言,一个Ruby语言的扩展版本,它不会改变它的内在本质。
如果你试图从Rails中删除ActiveSupport,一切都会崩溃。
Monkey-patching是另一种说法,即某段代码通过利用Ruby中的开放类来改变一个现有的类。
ActiveSupport库对许多类进行了Monkey-patch,目前在其core_ext目录下有3471个LOC。
当你有一个库,一个rubygem,它为核心类添加了如此大量的新方法时,理解这一点很重要:您不再使用Ruby,您现在使用的是Ruby方言,实现为名为ActiveSupport的库您必须知道,您在应用程序代码中添加到自己的类的方法可能会导致与ActiveSupport发生冲突构建其他库(也是猴子补丁核心类)是一个非常糟糕的主意,因为它们也会导致冲突前段时间,我们有很大依赖monkey-patching的rubygems,我们甚至有一个旨在与Rails竞争的全栈框架。
它被称为Merb,它也有类似ActiveSupport的东西,它被称为extlib。
正如您可能猜到的那样——它导致了与ActiveSupport的冲突,因此在同一个代码库中使用这两个库并不可行。
不过,Merb和Rails“合并”到了Rails3中,这就是我们不再有“extlib问题”的原因,因为库已经消失了。
随着时间的推移,许多从事各种gem的Ruby开发人员已经了解了monkey-patching的缺点,并且干脆停止了。
不幸的是,即使大多数gem不再依赖于monkey-patchin,我们仍然有ActiveSupport,因为它是Rails的基础部分。
毕竟,框架是用ActiveSupportRuby方言编写的!不过,问题的症结在于:作为Ruby方言的一部分实现的API看起来“更好”、更简洁和自然为什么?因为它看起来像是语言的一部分!这就是为什么像这样的东西1.day.ago看起来如此“自然”。
除了它不是Ruby,因为它是ActiveSupport。
更多点击标题Rails并不是用Ruby编写的
这是来自波兰人solnic.codes的帖子,大意如下:波兰语是一门非常难学的语言,它实际上被认为是世界上最难学习的10种语言之一。
在波兰,就像在许多其他国家一样,有些地区使用方言而不是“纯粹”的语言形式,所以在我的城市,我们有自己的方言。
编程语言也有方言,根据定义,编程语言方言是“语言的(相对较小的)变体或扩展,不会改变其内在性质”。
这种变化或扩展是如何实现的并不重要。
重要的部分是原始语言得到了扩展,它提供了更多的功能,而它的原始性质和行为保持不变。
Ruby是一种具有开放类的编程语言,即使是语言的核心功能也可以通过简单地向核心类添加新方法来扩展,例如String或Array.这使得创建自己的Ruby方言变得非常简单!DHH在创建RubyonRails框架时就利用了Ruby的这一独特功能。
这个框架的基础是一个名为ActiveSupport的库——一个核心Ruby扩展的大集合,它们共同创建了一个Ruby方言,一个Ruby语言的扩展版本,它不会改变它的内在本质。
如果你试图从Rails中删除ActiveSupport,一切都会崩溃。
Monkey-patching是另一种说法,即某段代码通过利用Ruby中的开放类来改变一个现有的类。
ActiveSupport库对许多类进行了Monkey-patch,目前在其core_ext目录下有3471个LOC。
当你有一个库,一个rubygem,它为核心类添加了如此大量的新方法时,理解这一点很重要:您不再使用Ruby,您现在使用的是Ruby方言,实现为名为ActiveSupport的库您必须知道,您在应用程序代码中添加到自己的类的方法可能会导致与ActiveSupport发生冲突构建其他库(也是猴子补丁核心类)是一个非常糟糕的主意,因为它们也会导致冲突前段时间,我们有很大依赖monkey-patching的rubygems,我们甚至有一个旨在与Rails竞争的全栈框架。
它被称为Merb,它也有类似ActiveSupport的东西,它被称为extlib。
正如您可能猜到的那样——它导致了与ActiveSupport的冲突,因此在同一个代码库中使用这两个库并不可行。
不过,Merb和Rails“合并”到了Rails3中,这就是我们不再有“extlib问题”的原因,因为库已经消失了。
随着时间的推移,许多从事各种gem的Ruby开发人员已经了解了monkey-patching的缺点,并且干脆停止了。
不幸的是,即使大多数gem不再依赖于monkey-patchin,我们仍然有ActiveSupport,因为它是Rails的基础部分。
毕竟,框架是用ActiveSupportRuby方言编写的!不过,问题的症结在于:作为Ruby方言的一部分实现的API看起来“更好”、更简洁和自然为什么?因为它看起来像是语言的一部分!这就是为什么像这样的东西1.day.ago看起来如此“自然”。
除了它不是Ruby,因为它是ActiveSupport。
更多点击标题Rails并不是用Ruby编写的
目录
- 1 拉斯维加斯赌场排名tenten赌场
- 2 下载两次下注的免费老虎机
- 3 可液体服务是什么意思
- ▪ 葛根泡水喝的七大功效
- ▪ 想要自己动
- 4 国产美女一级裸体视频
- ▪ 巨型老虎机订户轮盘游戏创建
- ▪ 博彩投注巴卡拉特免费优惠券
- 5 澳门赌场最小赌博方式如何返回
- 6 揉捏着她的高潮
- ▪ 杏耀彩票官方网站查询下载地址电话
- ▪ 闪电巴卡拉特
- ▪ 陈浩章梅叶心仪小说
- 7 荷兰妓女大白屁股
- ▪ 从转生眼开始的火影世界
- ▪ 樱花校园模拟器破解版汉化下载
- ▪ 星辰录漫画有新地址吗
- ▪ 酒店女前台好约吗
- ▪ Netmarble Baccarat Gold Cote Online Casino Muktu
- 8 美国体育博彩相关星期十十次赌场优惠券
- ▪ 超级97湴湴视频
- ▪ 老版草莓视频左线免费
- ▪ 赌场老虎机市场99NNA赌场
- ▪ 伯莱士特是什么
- ▪ 体育双重博彩赌场芯片单元
- ▪ Bet365韩国时间海外在线赌场
- ▪ 巴卡拉特皇家游戏老虎机游戏
- ▪ 杏耀是否安全
- 9 二区自拍
- ▪ 推荐几部超级好看的电影
- ▪ 在线百家乐移动Evolation Baccarat工作
- ▪ 日向优梨有几部无码片
- 10 2亿3千万张大千仕女图
- ▪ 疯狂的老虎机188bet加入
- ▪ 澳门赌场缺陷扬邦计划
- ▪ 奇缘内裤目录二目录全集
- ▪ 澳门赌场相关的每周在线赌场网站游戏
- ▪ 杏耀登陆测速登录玩及应用
- 11 王丽坤多少岁
- ▪ 黑色休闲鞋怎么搭配图
- ▪ 赌场游戏类型Microbaccarat操作
- ▪ 赌场订阅优惠券立即付款轮盘投注策略
- ▪ 双 - up赌场海外博彩网站毕业
- ▪ 倪妮微博
- 12 沙滩赌场银行招聘1 XBET投注方法
- 13 小小奶瓶私人订制百度网盘
- 14 赌场社区贝丝·巴卡拉特优惠券
老虎机机器在线插槽网站游戏伯特诺剑广场 《老虎机机器在线插槽网站游戏伯特诺剑广场 》由来
编辑老虎机机器在线插槽网站游戏伯特诺剑广场 《老虎机机器在线插槽网站游戏伯特诺剑广场 》起源