![]() |
1
61
类的目的是将相似的对象或具有相似行为的对象组合在一起。
你能举一个例子,说明你会在一个项目中实施什么样的常见行为吗
下面是如何实现所有这些方法:
反过来说:
几年前,我写这篇文章只是为了好玩 even published it the RubySpec conformance testsuite 和 ported it over to my syntax 然后就过去了。 |
![]() |
2
23
mailing list message 2004年。
我个人不同意这一点;前面提到的“字符串解析”就是一个例子。另一个问题是,当您根据变量的类型对其应用不同的处理方法时(例如,一个yml解析器),拥有一个“Boolean”类是很方便的—它会删除一个“if”。它看起来也更正确,但这是个人观点。 |
![]() |
3
5
引用Matz on Ruby forum (2013)
|
![]() |
4
4
true和false可以由一个包含多个值的布尔类来管理,但是class对象必须具有内部值,因此每次使用都必须取消引用。 相反,Ruby将true和false视为长值(0和1),每个值对应于一种对象类(FalseClass和TrueClass)。通过使用两个类而不是一个布尔类,每个类不需要任何值,因此可以通过其类标识符(0或1)进行区分。我相信这可以转化为Ruby引擎内部的显著速度优势,因为在Ruby内部可以将TrueClass和FalseClass视为需要从其ID值进行零转换的长值,而布尔对象在计算之前必须取消引用。 |
![]() |
5
3
因为除了
我相信Ruby背后的一个重要思想就是让你所希望的行为成为你程序的固有行为(例如布尔解析),而不是创建一个完全封装的类,它生活在自己的命名空间世界中(例如BooleanParser)。 |
![]() |
6
1
在Ruby中,nil和false都是假的,其他的都是真的。因此不需要特定的布尔类。 你可以试试:
5计算为真
将打印“nil is false” |
![]() |
7
1
主要原因很简单,这是一个事实,这是更快和更简单的实现布尔表达式,因为它是目前比布尔类,这意味着转换。 正如Mongus Pong告诉你的,当你写“如果”时,你要求解释者评估 事情 然后是分支。如果有布尔类,就必须转换 事情 变成布尔值 之前 分支(多走一步)。 记住,这样一个->布尔转换可以作为布尔类中的Ruby方法使用。然后可以像其他任何Ruby方法一样动态地更改这个方法,允许开发人员将事情完全搞砸(这确实不是那么严重),但是很明显,这不允许解释程序按其应该的方式优化测试。 您是否意识到,它将用一个完整的方法调用代替一些CPU指令操作,这在Ruby中是昂贵的(记住“send”方法处理)。。。 |
![]() |
8
-2
|
![]() |
dallin · 数组中的逗号运算符是否有名称? 11 年前 |