小编Ste*_*fan的帖子

根据数组中相同键的顺序对哈希键进行排序

我需要根据其他数组中的键的顺序对Hash进行排序:

hash = { a: 23, b: 12 }
array = [:b, :a]
required_hash #=> { b: 12, a: 23 } 
Run Code Online (Sandbox Code Playgroud)

有没有办法在单行中做到这一点?

ruby

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

如何将可汇总指标压缩到ruby表中的唯一标识符

我正在尝试将可汇总指标压缩到ruby表中的唯一标识符.

我有下表:

[["id1", 123], ["id2", 234], ["id1", 345]]
Run Code Online (Sandbox Code Playgroud)

压缩指标的最有效方法是什么,它看起来像这样:

[["id1", 468], ["id2", 234]]
Run Code Online (Sandbox Code Playgroud)

ruby

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

用一对二块参数调用`Hash #map`

entries哈希在哪里:

entries = { foo: 1, bar: 2 }
Run Code Online (Sandbox Code Playgroud)

这是我熟悉的语法:

entries.map { |key, val| "#{key} #{val}" }
#=> ["foo 1", "bar 2"]
Run Code Online (Sandbox Code Playgroud)

这是我在教程中遇到的语法:

entries.map { |key_val| "#{key_val.first} #{key_val.last}" }
#=> ["foo 1", "bar 2"]
Run Code Online (Sandbox Code Playgroud)

我是Ruby的新手,所以我很惊讶这两种语法都能正常工作.我的问题是:

  1. 这两者有什么区别吗?

  2. 为什么这样做 - 是因为哈希表对象以两种不同的方式实现Enumerable接口(提供map方法)?

ruby arrays hash

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

具有不寻常语法的Ruby方法

我有一些方法:

def example_method
  I ? world!
end
Run Code Online (Sandbox Code Playgroud)

我对这个方法有两个问题:

  1. 由于不存在引号(example_method不是我的方法),这种方法怎么可能不会返回错误.
  2. 我的问题是,如何使这个方法返回'I ? too!'字符串而不重新定义,重写此方法.

第2点是我必须解决的练习.

谢谢!

ruby

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

如何在ruby中将"+ ="转换为运算符

我可以转换"+","-""/"运营商使用2.send("-",3)

但它不起作用 "+="

a = 2
a += 2 #=> 4

a = 2
a.send("+=", 4) #=> NoMethodError: undefined method `+=' for 2:Fixnum
Run Code Online (Sandbox Code Playgroud)

我试图先转换符号; 但也行不通;

怎么解决这个问题?

ruby

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

在ruby中,如何找到给定字符串的第一个非空白字符的索引

在ruby中,如何查找给定字符串的第一个非空格(非制表符,非空格,非换行符)的索引.

例如,给定字符串"\t\nstring",第一个非制表符,非空格字,非换行符的索引将是2,即's'.

ruby regex

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

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

如何在 Ruby 中打印转义字符?

我有一个包含转义字符的字符串:

word = "x\nz"
Run Code Online (Sandbox Code Playgroud)

我想将其打印为x\nz.

但是,puts word给了我:

x
z
Run Code Online (Sandbox Code Playgroud)

如何获得puts word输出x\nz而不是创建新行?

ruby ascii escaping

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

从数组的散列中选择属性中的最高值

我有这个哈希:

h = {
  124 => ["shoes", "59.99"],
  456 => ["pants", "49.50"],
  352 => ["socks", "3.99"]
}
Run Code Online (Sandbox Code Playgroud)

每个值都有两个元素.他们是一个名称(如"shoes","pants","socks")和价格(例如"59.99","49.50""3.99").我需要选择价格最高的价值.这124对价格来说至关重要"59.99".如何选择价格最高的哈希?

我试过这个:

h.select{ |x| x[1] }.max
#=> [456, ["pants", "49.50"]]
Run Code Online (Sandbox Code Playgroud)

但这给了我最大值并返回键456.

ruby arrays hash

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

如果它存在于 rails 中,则应用 where 条件

在 rails activerecord 中有没有办法根据条件应用 where 条件?

例如:假设我想应用过滤器,如果它存在于输入参数中。假设@name 是必填字段,@salary 是可选字段。

@name = "test_name"
@salary = 2000
Run Code Online (Sandbox Code Playgroud)

我想做如下事情:

Employee.where(name: @name)
        .where(salary: @salary) if @salary.present?
Run Code Online (Sandbox Code Playgroud)

我知道要在多个 db 调用中进行,但我正在寻找一个选项来在单个 db 调用中实现这一点。

ruby activerecord ruby-on-rails rails-activerecord ruby-on-rails-5

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