标签: ruby

如何在Ruby中使对象实例成为哈希键?

我有一个Foo类,里面有一些成员变量.当类的两个实例中的所有值相等时,我希望对象"相等".然后,我想将这些对象作为哈希中的键.当我目前尝试这个时,哈希将每个实例视为不相等.

h = {}
f1 = Foo.new(a,b)
f2 = Foo.new(a,b)
Run Code Online (Sandbox Code Playgroud)

此时f1和f2应该相等.

h[f1] = 7
h[f2] = 8
puts h[f1]
Run Code Online (Sandbox Code Playgroud)

应该打印8

ruby hashmap

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

在Ruby中,`rescue`语句可以嵌套在哪些结构中

在ruby中捕获错误,使用该rescue语句.通常这种说法发生在begin和之间end.也可以使用rescue语句作为block(do ... end)或方法(def ... end)的一部分.我的问题是什么其他结构(循环,而如果,......),如果有任何将拯救巢内?

ruby syntax error-handling

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

使用带参数的instance_eval调用proc?

我知道这有效:

proc = Proc.new do
  puts self.hi + ' world'
end

class Usa
  def hi
    "Hello!"
  end
end
Usa.new.instance_eval &proc
Run Code Online (Sandbox Code Playgroud)

但是我想将参数传递给proc,所以我试过这个不起作用:

proc = Proc.new do |greeting| 
  puts self.hi + greeting
end

class Usa
  def hi
    "Hello!"
  end
end
Usa.new.instance_eval &proc, 'world' # does not work
Usa.new.instance_eval &proc('world') # does not work
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我使它工作吗?

ruby

33
推荐指数
1
解决办法
8890
查看次数

Windows上的LESS CSS

试图在我的Windows机器上为CSS设置LESS,我已经安装了ruby和rubygems并完全按照说明操作.

我投入teststyle.lessC:\.
当我输入

lessc teststyle.less
Run Code Online (Sandbox Code Playgroud)

把它编译成.css文件,我收到一个错误:

The filename, directory name, or volume label syntax is incorrect.
Run Code Online (Sandbox Code Playgroud)

在那些熟悉LESS的人中,你们中的任何一个人都能解决我的问题吗?
我搞砸了安装吗?

css ruby windows less

33
推荐指数
4
解决办法
5万
查看次数

如何在继承类中使用重写常量

鉴于此代码:

class A
  CONST = 'A'

  def initialize
    puts CONST
  end
end

class B < A
  CONST = 'B'
end

A.new # => 'A'
B.new # => 'A'
Run Code Online (Sandbox Code Playgroud)

我想B使用这个CONST = 'B'定义,但我不知道如何.有任何想法吗?

问候

汤姆

ruby inheritance class constants

33
推荐指数
1
解决办法
8654
查看次数

Ruby的异常错误类

您可以创建异常的子类以使其更具描述性,但您应如何设置默认的"消息"?

class MyError < StandardError
  # default message = "You've triggered a MyError"
end

begin
  raise MyError, "A custom message"
rescue Exception => e
  p e.message
end

begin
  raise MyError
raise Exception => e
  p e.message
end
Run Code Online (Sandbox Code Playgroud)

第一个应输出'自定义消息'

第二个应该输出'你已经触发了一个MyError'

有关最佳做法的任何建议吗?

ruby

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

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

ri和rdoc有什么区别

每当我安装宝石时,我都会看到ri和rdoc.我知道这是文档,但两者之间有什么区别以及如何使用它们?

ruby rdoc ri

33
推荐指数
3
解决办法
8457
查看次数

如何使用RestClient进行基本身份验证?

有谁知道如何使用RestClient进行基本身份验证?

我需要通过他们的RESTful API在GitHub上创建一个私有存储库.

ruby github rest-client

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

IRB有哪些替代品?

在python世界中,有许多替代python解释器可以添加很酷的附加功能.一个特别有用的示例是bpython,它添加了动态语法突出显示,自动提取文档,并显示实时自动完成信息.在Ruby世界中,我还没有发现任何添加到基本IRB解释器的项目,甚至是这些功能的一部分.我只是不够努力,或者这只是Ruby社区缺乏的东西?

ruby irb

33
推荐指数
2
解决办法
8115
查看次数