我需要根据其他数组中的键的顺序对Hash进行排序:
hash = { a: 23, b: 12 }
array = [:b, :a]
required_hash #=> { b: 12, a: 23 }
Run Code Online (Sandbox Code Playgroud)
有没有办法在单行中做到这一点?
我正在尝试将可汇总指标压缩到ruby表中的唯一标识符.
我有下表:
[["id1", 123], ["id2", 234], ["id1", 345]]
Run Code Online (Sandbox Code Playgroud)
压缩指标的最有效方法是什么,它看起来像这样:
[["id1", 468], ["id2", 234]]
Run Code Online (Sandbox Code Playgroud) 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的新手,所以我很惊讶这两种语法都能正常工作.我的问题是:
这两者有什么区别吗?
为什么这样做 - 是因为哈希表对象以两种不同的方式实现Enumerable接口(提供map方法)?
我有一些方法:
def example_method
I ? world!
end
Run Code Online (Sandbox Code Playgroud)
我对这个方法有两个问题:
example_method不是我的方法),这种方法怎么可能不会返回错误.'I ? too!'字符串而不重新定义,重写此方法.第2点是我必须解决的练习.
谢谢!
我可以转换"+","-"或"/"运营商使用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中,如何查找给定字符串的第一个非空格(非制表符,非空格,非换行符)的索引.
例如,给定字符串"\t\nstring",第一个非制表符,非空格字,非换行符的索引将是2,即's'.
我只是在学习Ruby,我想知道两者之间的区别
a += b
Run Code Online (Sandbox Code Playgroud)
和
a =+ b
Run Code Online (Sandbox Code Playgroud) 我有一个包含转义字符的字符串:
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而不是创建新行?
我有这个哈希:
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.
在 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