对于一个简单的类似结构的类:
class Tiger
attr_accessor :name, :num_stripes
end
Run Code Online (Sandbox Code Playgroud)
什么是正确实现平等,以确保以正确的方式==,===,eql?,等工作,使在很好的集合类游戏的情况下,哈希等.
编辑
另外,当你想根据未暴露在类之外的状态进行比较时,实现相等性的好方法是什么?例如:
class Lady
attr_accessor :name
def initialize(age)
@age = age
end
end
Run Code Online (Sandbox Code Playgroud)
在这里,我希望我的平等方法考虑到@age,但是Lady并没有将她的年龄暴露给客户.在这种情况下我是否必须使用instance_variable_get?
Ruby可以向Number类和其他核心类型添加方法以获得如下效果:
1.should_equal(1)
Run Code Online (Sandbox Code Playgroud)
但似乎Python无法做到这一点.这是真的?如果是这样,为什么?是否与类型无法修改的事实有关?
更新:我不想谈论猴子修补的不同定义,而是只关注上面的例子.我已经得出结论,由于你们中的一些人已经回答,所以无法做到.但我想更详细地解释为什么不能这样做,也许如果Python中有什么功能可以允许这样做.
回答你们中的一些人:我可能想要这样做的原因只是美学/可读性.
item.price.should_equal(19.99)
Run Code Online (Sandbox Code Playgroud)
这更像是英语,并清楚地表明哪个是测试值,哪个是预期值,如下所示:
should_equal(item.price, 19.99)
Run Code Online (Sandbox Code Playgroud)
这个概念就是Rspec和其他一些Ruby框架所基于的.
ruby python programming-languages fluent-interface monkeypatching
嗨,我正在研究iPhone开发,而Objective-C不是我的首选语言.据我所知,目前Ruby还不能用于与iPhone上的Cocoa Touch交谈.
所以我的问题是,我错了吗?我可以在iPhone上使用Ruby来开发Cocoa Touch应用程序吗?iPhone上的Ruby的未来是什么样的?
对于包含给定类SomeCoolClass的文件,什么是正确的文件名?
1. somecoolclass.rb 2. some_cool_class.rb 3. some-cool-class.rb 4. SomeCoolClass.rb
或其他一些变化?
我注意到在Ruby stdlib中使用了版本1,2和3.
method_missing在Ruby中定义方法时有什么需要注意的吗?我想知道是否存在一些不那么明显的继承,异常抛出,性能或其他任何东西的交互.
相对较新的rails并尝试使用具有name,gender,father_id和mother_id(2个父项)的单个Person模型来建模一个非常简单的族"树".下面基本上是我想要做的,但显然我不能重复:has_many中的孩子(第一个被覆盖).
class Person < ActiveRecord::Base
belongs_to :father, :class_name => 'Person'
belongs_to :mother, :class_name => 'Person'
has_many :children, :class_name => 'Person', :foreign_key => 'mother_id'
has_many :children, :class_name => 'Person', :foreign_key => 'father_id'
end
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以将has_many与2个外键一起使用,或者根据对象的性别更改外键?或者还有其他/更好的方式吗?
谢谢!
来自第一次Ruby程序员的非常简单的问题.
你如何在Ruby中循环一段文本?每当遇到换行符时,我想重新启动内循环.
def parse(input)
...
end
Run Code Online (Sandbox Code Playgroud) 我已经读过,errors.add_to_base应该用于与对象相关的错误,而不是特定的属性.我无法概念化这意味着什么.有人可以举例说明我何时想要使用它们?
例如,我有一个乐队模型,每个乐队都有一个流派.当我验证某种类型的存在时,如果该类型丢失,是否应该将错误添加到基类中?
越多的例子越好
谢谢!
我最近发现了Ruby的块和屈服特征,我想知道:这在计算机科学理论方面适合哪些方面?它是一种函数式编程技术,还是更具体的?
ruby ×10
model ×2
cocoa-touch ×1
conventions ×1
equality ×1
file ×1
has-many ×1
ios ×1
iphone ×1
loops ×1
python ×1
regex ×1
string ×1
validation ×1
while-loop ×1
yield ×1