标签: ruby

什么是在ruby中实现平等的正确方法

对于一个简单的类似结构的类:

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 equality

50
推荐指数
2
解决办法
1万
查看次数

你可以在Python中的核心类型上修补补丁方法吗?

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

49
推荐指数
6
解决办法
2万
查看次数

你能用Ruby开发原生的iPhone应用程序吗?

嗨,我正在研究iPhone开发,而Objective-C不是我的首选语言.据我所知,目前Ruby还不能用于与iPhone上的Cocoa Touch交谈.

所以我的问题是,我错了吗?我可以在iPhone上使用Ruby来开发Cocoa Touch应用程序吗?iPhone上的Ruby的未来是什么样的?

ruby iphone cocoa-touch ios

49
推荐指数
6
解决办法
4万
查看次数

Ruby中的标准文件命名约定

对于包含给定类SomeCoolClass的文件,什么是正确的文件名?

 1. somecoolclass.rb
 2. some_cool_class.rb
 3. some-cool-class.rb
 4. SomeCoolClass.rb

或其他一些变化?

我注意到在Ruby stdlib中使用了版本1,2和3.

ruby file conventions naming-conventions

49
推荐指数
4
解决办法
2万
查看次数

Ruby中$ 1和\ 1

在Ruby中使用正则表达式时,$ 1和\ 1之间有什么区别?

ruby regex

49
推荐指数
2
解决办法
2万
查看次数

在Ruby中使用method_missing陷阱

method_missing在Ruby中定义方法时有什么需要注意的吗?我想知道是否存在一些不那么明显的继承,异常抛出,性能或其他任何东西的交互.

ruby metaprogramming

49
推荐指数
4
解决办法
2万
查看次数

Rails模型has_many有多个foreign_keys

相对较新的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 model ruby-on-rails has-many

49
推荐指数
5
解决办法
2万
查看次数

你如何在Ruby中循环多线字符串?

来自第一次Ruby程序员的非常简单的问题.

你如何在Ruby中循环一段文本?每当遇到换行符时,我想重新启动内循环.

def parse(input)
    ...
end
Run Code Online (Sandbox Code Playgroud)

ruby string loops while-loop

49
推荐指数
2
解决办法
3万
查看次数

Ruby on Rails:errors.add_to_base与errors.add

我已经读过,errors.add_to_base应该用于与对象相关的错误,而不是特定的属性.我无法概念化这意味着什么.有人可以举例说明我何时想要使用它们?

例如,我有一个乐队模型,每个乐队都有一个流派.当我验证某种类型的存在时,如果该类型丢失,是否应该将错误添加到基类中?

越多的例子越好

谢谢!

ruby validation model ruby-on-rails

49
推荐指数
3
解决办法
6万
查看次数

Ruby与计算机科学相关的屈服特征

我最近发现了Ruby的块和屈服特征,我想知道:这在计算机科学理论方面适合哪些方面?它是一种函数式编程技术,还是更具体的?

ruby functional-programming yield

49
推荐指数
2
解决办法
9896
查看次数