我花了一段时间才了解私有方法在Ruby中是如何工作的,这让我觉得非常尴尬.有谁知道私人方法是否有充分的理由按照它们的方式处理?这只是历史原因吗?还是实施原因?还是有很好的合理逻辑(即语义)?
例如:
class Person
private
attr_reader :weight
end
class Spy < Person
private
attr_accessor :code
public
def test
code #(1) OK: you can call a private method in self
Spy.new.code #(2) ERROR: cannot call a private method on any other object
self.code #(3) ERROR!!! cannot call a private method explicitly on 'self'
code="xyz" #(4) Ok, it runs, but it actually creates a local variable!!!
self.code="z" #(5) OK! This is the only case where explicit 'self' is ok
weight …Run Code Online (Sandbox Code Playgroud) 我最近看过很多关于RubyMine的博客,作为最好的Rails IDE.目前,我正在使用NetBeans IDE作为我的Ruby和Rails的东西,但我想知道这里是否有人会亲自推荐这个IDE,以及为什么我应该为它支付99美元.
"早期失败"的含义是什么意思,在什么情况下这种方法最有用,何时会避免这种做法?
我试图在Rails中调试模型,所以我使用这段代码:
logger.debug('asasd')
但是,我正在拖尾日志文件development.log,但我没有看到它添加到此文件.
我如何让它工作?
我想看一个数组里面是否有一个或多个值.例如,像这样:
[1,2,3,4,5,6].include?([4,1]) # => true
[4,1,6,2].include?([4,1]) # => true
[3,4,7].include?([4,1]) # => false
Run Code Online (Sandbox Code Playgroud)
当然,"包括?" 方法只能检查一个值.有没有检查多个值的方法?
如果我使用Ruby on Rails,我应该安装MRI/YARV Ruby还是JRuby?哪个更快?
在红宝石中,我想知道是否有办法做到以下几点:
我基本上有一个包含四种可能结果的矩阵:
A is True, B is True
A is True, B is False
A is False, B is True
A is False, B is False
Run Code Online (Sandbox Code Playgroud)
我想以最干净的"红宝石方式"为此写一个测试.
我希望做类似的事情
case[A,B]
when A && B then ...
when A && !B then ...
when !A && B then ...
when !A && !B then ...
end
Run Code Online (Sandbox Code Playgroud)
......但这不起作用.那么,处理这种情况的最佳方法是什么?
我有一个哈希:
h = {'name' => 'sayuj',
'age' => 22,
'project' => {'project_name' => 'abc',
'duration' => 'prq'}}
Run Code Online (Sandbox Code Playgroud)
我需要一个这个哈希的副本,更改不应该影响原始哈希.
当我尝试时,
d = h.dup # or d = h.clone
d['name'] = 'sayuj1'
d['project']['duration'] = 'xyz'
p d #=> {"name"=>"sayuj1", "project"=>{"duration"=>"xyz", "project_name"=>"abc"}, "age"=>22}
p h #=> {"name"=>"sayuj", "project"=>{"duration"=>"xyz", "project_name"=>"abc"}, "age"=>22}
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到project['duration']原始哈希中的更改是因为project是另一个哈希对象.
我想要散列duped或cloned递归.我怎样才能做到这一点?
使用pry,可以非常简单地找到定义方法的位置并查看source by edit-method命令.然而,课堂本身没有对应关系.当该类没有自己定义的方法时,很难找到源代码pry.
类是常量,所以它等同于询问在哪里找到定义特定Ruby常量的源.非常感谢你.