标签: ruby

确定ruby中对象的类型

我将使用python作为我正在寻找的示例(如果您不了解Python,可以将其视为伪代码):

>>> a = 1
>>> type(a)
<type 'int'>
Run Code Online (Sandbox Code Playgroud)

我知道在红宝石中我能做到:

1.9.3p194 :002 > 1.class
 => Fixnum 
Run Code Online (Sandbox Code Playgroud)

但这是确定对象类型的正确方法吗?

ruby types

338
推荐指数
6
解决办法
41万
查看次数

我该如何安装本地宝石?

如果我将.gem文件下载到计算机中的文件夹,我可以稍后使用它安装gem install吗?

ruby rubygems

336
推荐指数
7
解决办法
31万
查看次数

在Ruby中映射和删除nil值

我有一个地图,可以更改值或将其设置为零.然后我想从列表中删除nil条目.该列表不需要保留.

这就是我目前拥有的:

# A simple example function, which returns a value or nil
def transform(n)
  rand > 0.5 ? n * 10 : nil }
end

items.map! { |x| transform(x) } # [1, 2, 3, 4, 5] => [10, nil, 30, 40, nil]
items.reject! { |x| x.nil? } # [10, nil, 30, 40, nil] => [10, 30, 40]
Run Code Online (Sandbox Code Playgroud)

我知道我可以做一个循环并有条件地收集另一个数组,如下所示:

new_items = []
items.each do |x|
    x = transform(x)
    new_items.append(x) unless x.nil?
end
items = new_items
Run Code Online (Sandbox Code Playgroud)

但它似乎不是红宝石般的.有没有一种很好的方法可以在列表中运行一个函数来删除/排除nils?

ruby

334
推荐指数
8
解决办法
22万
查看次数

何时使用lambda,何时使用Proc.new?

在Ruby 1.8中,proc/lambda与另一方面之间存在细微差别Proc.new.

  • 这些差异是什么?
  • 你能给出如何决定选择哪一个的指导方针吗?
  • 在Ruby 1.9中,proc和lambda是不同的.这是怎么回事?

ruby lambda proc

332
推荐指数
10
解决办法
8万
查看次数

Ruby:从实例调用类方法

在Ruby中,如何从该类的实例中调用类方法?说我有

class Truck
  def self.default_make
    # Class method.
    "mac"
  end

  def initialize
    # Instance method.
    Truck.default_make  # gets the default via the class's method.
    # But: I wish to avoid mentioning Truck. Seems I'm repeating myself.
  end
end
Run Code Online (Sandbox Code Playgroud)

该行Truck.default_make检索默认值.但有没有提到这样说的方法Truck呢?好像应该有.

ruby class-method

331
推荐指数
6
解决办法
17万
查看次数

Rails 4:before_filter vs. before_action

在扶手> 4.0.0发电机,创建CRUD操作before_action没有before_filter.它似乎做同样的事情.那么这两者之间的区别是什么?

ruby ruby-on-rails crud ruby-on-rails-4

329
推荐指数
3
解决办法
15万
查看次数

在Ruby中迭代数组的"正确"方法是什么?

对于它的所有瑕疵,PHP在这方面非常好.数组和哈希之间没有区别(也许我很天真,但这对我来说显然是正确的),并且要么迭代你要么做

foreach (array/hash as $key => $value)
Run Code Online (Sandbox Code Playgroud)

在Ruby中有很多方法可以做这种事情:

array.length.times do |i|
end

array.each

array.each_index

for i in array
Run Code Online (Sandbox Code Playgroud)

哈希更有意义,因为我总是使用

hash.each do |key, value|
Run Code Online (Sandbox Code Playgroud)

为什么我不能为数组做这个?如果我只想记住一种方法,我想我可以使用each_index(因为它使索引和值都可用),但是不得不这样做array[index]而烦人value.


哦,对,我忘记了array.each_with_index.然而,这一次吮吸,因为它去|value, key|hash.each|key, value|!这不是疯了吗?

ruby arrays loops

327
推荐指数
8
解决办法
50万
查看次数

如何按值从数组中删除一个元素

我在Ruby中有一系列元素

[2,4,6,3,8]
Run Code Online (Sandbox Code Playgroud)

我需要删除具有值的元素,3例如

我怎么做?

ruby arrays

327
推荐指数
12
解决办法
32万
查看次数

自制软件不在OSX上工作

在终端上运行brew命令时出现此错误.需要帮助解决.

 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- utils/popen (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/utils.rb:6:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/global.rb:9:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/brew.rb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)

这是我的env gem设置:

  • RUBYGEMS版本:2.0.14
  • RUBY VERSION:2.0.0(2014-02-24 patchlevel 451)[universal.x86_64-darwin13]
  • 安装目录:/ Library/Ruby/Gems/2.0.0
  • RUBY EXECUTABLE:/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
  • 可执行的目录:/ usr/bin
  • RUBYGEMS PLATFORMS:
    • 红宝石
    • 通用 - 达尔文-13
  • 创业板路径:
    • /Library/Ruby/Gems/2.0.0
    • /Users/ronaldkwan/.gem/ruby/2.0.0
    • /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
  • 创业板配置:
    • :update_sources => true
    • :verbose => true
    • :backtrace => false
    • :bulk_threshold => 1000

ruby macos homebrew rubygems

326
推荐指数
6
解决办法
11万
查看次数

在Ruby中,|| =(or-equals)是什么意思?

以下代码在Ruby中的含义是什么?

||=
Run Code Online (Sandbox Code Playgroud)

它的语法是否有任何意义或原因?

ruby operators

325
推荐指数
9
解决办法
9万
查看次数