小编Ste*_*fan的帖子

使用值作为数组创建哈希,将默认值创建为空数组

我想在Ruby中创建一个Hash,默认值为空数组

所以,我编码

x = Hash.new([])
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将值推入其中时

x[0].push(99)
Run Code Online (Sandbox Code Playgroud)

所有键都99被推入该数组.我该如何解决这个问题?

ruby

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

git diff与组合--word-diff

给定一个单词改变的文件,"正常" git diff看起来像这样:

正常的git diff

虽然git diff --word-diff=color看起来像这样:

git diff with --word-diff

是否可以将两者结合起来以获得单独的行,突出显示更改后的单词?像这样的东西:

结合git diff

这可能是微不足道的,但我无法理解.

git git-diff

24
推荐指数
1
解决办法
4970
查看次数

Twitter Bootstrap 2.0是否内置了对齐表格内容的内容?

通过设置"align"属性很容易对齐表,但是通过css对齐表有点hacky.是否内置支持在Twitter Bootstrap 2.0中对齐表格?

css twitter-bootstrap twitter-bootstrap-2

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

Ruby使用.reject从数组中删除nil值

我有一个数组:

scores = [1, 2, 3, "", 4]
Run Code Online (Sandbox Code Playgroud)

我想删除所有空白值.但当我运行这个:

puts scores.reject(&:empty?)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

undefined method `empty' for 1:Fixnum
Run Code Online (Sandbox Code Playgroud)

如何在一步过程中从数组中删除非整数的值?我使用的是Ruby 1.9.3.

ruby arrays

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

Rails 4 - 执行简单查询时未定义的方法`call'

我是Rails的新手,但这看起来非常简单.我有一个名为Game生成的模型,如下所示:

rails generate model Game name:string year:integer manufacturer:string notes:string is_active:boolean
Run Code Online (Sandbox Code Playgroud)

我已经装表了一些数据,我试图获取所有地方行is_activetrue.我希望我的模型类似于:

class Game < ActiveRecord::Base
  scope :active, where(:is_active => 1)
end
Run Code Online (Sandbox Code Playgroud)

我的问题是每当我尝试绑定到Game.active查询时我都会收到错误.这是rails控制台中的相同错误,或者我尝试将其设置为控制器中的变量.错误是:

undefined method `call' for #<Game::ActiveRecord_Relation:0x007ffadb540aa0>
Run Code Online (Sandbox Code Playgroud)

在控制台中运行时,我看到:

irb(main):001:0> Game.active
NoMethodError:   Game Load (0.2ms)  SELECT `games`.* FROM `games`  WHERE `games`.`is_active` = 1
undefined method `call' for #<Game::ActiveRecord_Relation:0x007fcdca66b800>
    from /home/dcain/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activerecord-4.1.0/lib/active_record/relation/delegation.rb:136:in `method_missing'
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-4.1

16
推荐指数
1
解决办法
6577
查看次数

rails in_groups和in_groups_of之间有什么区别?

这两种方法听起来都应该做同样的事情,但它们看起来并不是彼此的别名.in_groups和之间有什么区别in_groups_of

ruby ruby-on-rails

16
推荐指数
1
解决办法
5172
查看次数

如何从ruby中删除字符串中的所有非数字?

用户以下列形式输入数字:

1-800-432-4567
800-432-4567
800.432.4566
(800)432.4567
+1(800)-432-4567
800 432 4567
Run Code Online (Sandbox Code Playgroud)

我希望所有这些都变成一个没有特殊字符的剥离版本18004324567.数据以a的形式出现String,因此不需要进行字符串检查.

我的方法如下:

def canonical_form number
  a = remove_whitespaces number #to clear all whitespaces in between
  a.gsub(/[()-+.]/,'')     
end

def remove_whitespaces number
  number.gsub(/\s+/,'')  #removes all whitespaces
end
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?可以使用canonical_form方法中的正则表达式执行空格检查而无需额外的空格方法吗?如何以更简洁的方式对其进行重构或完成?

ruby

16
推荐指数
2
解决办法
6055
查看次数

如何通过相邻元素上的条件将数组拆分为有限数量的分区

假设我有一系列数字,例如

ary = [1, 3, 6, 7, 10, 9, 11, 13, 7, 24]
Run Code Online (Sandbox Code Playgroud)

我想在第一个点之间拆分数组,其中较小的数字跟随较大的数字.我的输出应该是:

[[1, 3, 6, 7, 10], [9, 11, 13, 7, 24]]
Run Code Online (Sandbox Code Playgroud)

我试过了slice_when,它非常接近:

ary.slice_when { |i, j| i > j }.to_a
#=> [[1, 3, 6, 7, 10], [9, 11, 13], [7, 24]]
Run Code Online (Sandbox Code Playgroud)

但它也在13和之间分裂7,所以我必须加入其余的数组:

first, *rest = ary.slice_when { |i, j| i > j }.to_a
[first, rest.flatten(1)]
#=> [[1, 3, 6, 7, 10], [9, 11, 13, 7, 24]]
Run Code Online (Sandbox Code Playgroud)

这看起来有点麻烦.在找到匹配项后继续比较项目似乎效率低下.

我正在寻找基于任意条件的通用解决方案.有数字元素,i > j …

ruby arrays enumerable

13
推荐指数
3
解决办法
1192
查看次数

使用Ruby gsub转义linux路径名中的空格

我试图逃避Linux路径中的空间.但是,每当我试图逃避反斜杠时,我最终会得到一个双斜线.

示例路径:

/mnt/drive/site/usa/1201 East/1201 East Invoice.pdf
Run Code Online (Sandbox Code Playgroud)

所以我可以在Linux中使用它我想逃避它:

/mnt/drive/site/usa/1201\ East/1201\ East\ Invoice.pdf
Run Code Online (Sandbox Code Playgroud)

所以我正在尝试这个:

backup_item.gsub("\s", "\\\s")
Run Code Online (Sandbox Code Playgroud)

但是我得到了意想不到的输出

/mnt/drive/site/usa/1201\\ East/1201\\ East\\ Invoice.pdf
Run Code Online (Sandbox Code Playgroud)

ruby gsub

12
推荐指数
2
解决办法
8595
查看次数

将数组拆分为(element =>剩余元素)对的方法

给定一个数组文字,我想创建一个哈希,其中键是数组中的元素,值是包含其他/剩余元素的数组.

输入:

[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

输出:

{1=>[2, 3], 2=>[1, 3], 3=>[1, 2]}
Run Code Online (Sandbox Code Playgroud)

如果我引入变量很容易:

arr = [1, 2, 3]
arr.map { |i| [i, arr - [i]] }.to_h
Run Code Online (Sandbox Code Playgroud)

但是使用数组文字,我能想出的唯一解决方案涉及instance_exec或者instance_eval看起来像是hackish:

[1, 2, 3].instance_exec { map { |i| [i, self - [i]] } }.to_h
Run Code Online (Sandbox Code Playgroud)

我是否忽略了内置方法或明显的解决方案?group_by,combination,permutationpartition似乎并没有帮助.

ruby

12
推荐指数
1
解决办法
420
查看次数