我从Internet复制了以下Ruby代码并进行了一些更改.
__PRE__
但它不起作用!
请帮忙.我该怎么做才能自己调试程序?
在我阅读本文之前,我认为Ruby中的访问控制工作方式如下:
public- 可以被任何对象访问(例如Obj.new.public_method)protected - 只能从对象本身以及任何子类中访问private - 与protected相同,但子类中不存在该方法但是,看起来protected并且private行为相同,除了你不能private用显式接收器调用方法(即self.protected_method工作,但self.private_method没有).
这有什么意义?什么时候你不希望你的方法用显式接收器调用?
要检查是什么@some_var,我正在做
if @some_var.class.to_s == 'Hash'
Run Code Online (Sandbox Code Playgroud)
我确信有更优雅的方式来检查是否@some_var是一个Hash或一个Array.
你知道在ruby中使用双引号而不是单引号会在ruby 1.8和1.9中以任何有意义的方式降低性能.
所以,如果我输入
question = 'my question'
Run Code Online (Sandbox Code Playgroud)
比它快吗?
question = "my question"
Run Code Online (Sandbox Code Playgroud)
我想ruby试图弄清楚当遇到双引号时是否需要对某些东西进行评估,并且可能花费一些周期来做这件事.
我可能错过了一些明显的东西,但是有没有办法在每个循环中访问散列内的迭代索引/计数?
hash = {'three' => 'one', 'four' => 'two', 'one' => 'three'}
hash.each { |key, value|
# any way to know which iteration this is
# (without having to create a count variable)?
}
Run Code Online (Sandbox Code Playgroud) 在红宝石中,我读了一些操作符,但我找不到=~.什么是=~对,还是这是什么意思?我看到的程序有
regexs = (/\d+/)
a = somestring
if a =~ regexs
Run Code Online (Sandbox Code Playgroud)
我认为它是比较somestring等于数字但是,是否还有其他用法,=~运算符的正确定义是什么?
有没有办法在Ruby中的模块中创建一个类似于类变量的变量?我的意思是,它可以在不初始化模块实例的情况下访问,但可以更改(与模块中的常量不同).
为了n从字符串中获取最后一个字符,我假设您可以使用
ending = string[-n..-1]
Run Code Online (Sandbox Code Playgroud)
但是如果字符串长度小于n字母,那么你就得到了nil.
有哪些变通方法?
背景:字符串是纯ASCII,我可以访问ruby 1.9.1,我使用的是Plain Old Ruby Objects(没有Web框架).
我一直在阅读String今天的文档,我看到了:sub以前从未注意过的方法.我一直在使用:gsub,看起来它们基本相同.任何人都可以向我解释这个区别吗?谢谢!