标签: ruby

如何在Ruby中使用索引进行映射?

什么是最简单的转换方式

[x1, x2, x3, ... , xN]
Run Code Online (Sandbox Code Playgroud)

[[x1, 2], [x2, 3], [x3, 4], ... , [xN, N+1]]
Run Code Online (Sandbox Code Playgroud)

ruby arrays indexing

420
推荐指数
7
解决办法
20万
查看次数

Ruby中的map和collect之间的区别?

我用谷歌搜索了这个并得到了不完整/矛盾的观点 - 在Ruby/Rails中对一个数组做一个map和做一个实际上有什么区别collect吗?

这些文档似乎没有任何暗示,但是方法或性能可能存在差异吗?

ruby arrays map collect

414
推荐指数
5
解决办法
11万
查看次数

什么是Ruby的双冒号`::`?

什么是这个双结肠::?例如Foo::Bar.

我找到了一个定义:

::是一元运算符,允许:从类或模块外部的任何位置访问类或模块中定义的常量,实例方法和类方法.

如果您可以使用::暴露任何东西,范围(私人,受保护)有什么用处?

ruby syntax operators

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

Gemfile中的'require:false'是什么意思?

做这个:

gem 'whenever', require: false
Run Code Online (Sandbox Code Playgroud)

是指宝石需要安装,还是意味着它不是必需的?

ruby bundler gemfile

410
推荐指数
5
解决办法
7万
查看次数

如何突破红宝石块?

这是Bar#do_things:

class Bar   
  def do_things
    Foo.some_method(x) do |x|
      y = x.do_something
      return y_is_bad if y.bad? # how do i tell it to stop and return do_things? 
      y.do_something_else
    end
    keep_doing_more_things
  end
end
Run Code Online (Sandbox Code Playgroud)

这是Foo#some_method:

class Foo
  def self.some_method(targets, &block)
    targets.each do |target|
      begin
        r = yield(target)
      rescue 
        failed << target
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我想过使用raise,但我试图让它变得通用,所以我不想把任何具体的东西放进去Foo.

ruby

407
推荐指数
5
解决办法
30万
查看次数

复制activerecord记录的最简单方法是什么?

我想制作一个activerecord记录的副本,更改进程中的单个字段(除了id).实现这一目标的最简单方法是什么?

我意识到我可以创建一个新记录,然后遍历每个字段逐个复制数据 - 但我认为必须有一个更简单的方法来做到这一点......

如:

 @newrecord=Record.copy(:id)  *perhaps?*
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails rails-activerecord

402
推荐指数
7
解决办法
17万
查看次数

如何从Rake任务中运行Rake任务?

我已经编译在两个方面项目Rake文件,根据全局变量$build_type,它可以是:debug:release(结果走在不同的目录):

task :build => [:some_other_tasks] do
end
Run Code Online (Sandbox Code Playgroud)

我希望创建一个任务,依次编译项目的两个配置,如下所示:

task :build_all do
  [ :debug, :release ].each do |t|
    $build_type = t
    # call task :build with all the tasks it depends on (?)
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有办法将任务称为方法?或者我怎样才能达到类似的效果呢?

ruby rake

402
推荐指数
5
解决办法
14万
查看次数

你如何找到Ruby的最小/最大值?

我想做一些简单明了的事情,比如min(5,10),或者Math.max(4,7).Ruby中有这种功能吗?

ruby enumerable

401
推荐指数
5
解决办法
24万
查看次数

告诉Ruby程序等待一段时间

在转到下一行代码之前,你如何告诉Ruby程序等待任意时间?

ruby sleep

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

Ruby中包含和扩展有什么区别?

刚刚开始关注Ruby元编程.mixin/modules总是让我困惑.

  • include:将指定模块方法中的混合作为目标类中的实例方法
  • extend:将指定的模块方法混合为目标类中的类方法

那么主要区别在于这还是潜伏着更大的龙? 例如

module ReusableModule
  def module_method
    puts "Module Method: Hi there!"
  end
end

class ClassThatIncludes
  include ReusableModule
end
class ClassThatExtends
  extend ReusableModule
end

puts "Include"
ClassThatIncludes.new.module_method       # "Module Method: Hi there!"
puts "Extend"
ClassThatExtends.module_method            # "Module Method: Hi there!"
Run Code Online (Sandbox Code Playgroud)

ruby module include extend

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