相关疑难解决方法(0)

如何"取消"Ruby数组?

我目前正在尝试转换这个ruby数组:

[5, 7, 8, 1]
Run Code Online (Sandbox Code Playgroud)

进入这个:

[[5], [7], [8], [1]]
Run Code Online (Sandbox Code Playgroud)

什么是最好的方式?

我现在这样做:

[5, 7, 8, 1].select { |element| element }.collect { |element| element.to_a }
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

警告:默认`to_a'将过时

我究竟做错了什么?你能告诉我如何做到这一点吗?

在此先感谢您的问候!

ruby arrays

6
推荐指数
3
解决办法
2948
查看次数

Ruby中的`&:capitalize'究竟是什么?

我刚读了这个答案使用Ruby将大写字符串转换为title-case.

有以下代码行

"abc".split(/(\W)/).map(&:capitalize).join
Run Code Online (Sandbox Code Playgroud)

到底是&:capitalize什么?在我把它变成irb之前,我会告诉你,这不是有效的ruby语法.它必须是某种Proc对象,因为Array#map正常需要一个块.但事实并非如此.如果我把它单独放入irb,我会得到syntax error, unexpected tAMPER.

ruby syntax

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

Ruby map方法语法问题

可能重复:
map(&:name)在Ruby中意味着什么?

我正在观看railscasts更多的虚拟属性插曲.在那一集中,有一次,ryan使用了我无法理解的地图方法语法,有人可以解释一下吗?

tags.map(&:name).join(' ')
Run Code Online (Sandbox Code Playgroud)

tags是Tag Model的一个对象,它具有name属性.我能够理解这个的含义(我想是:)).所有标记对象的name属性都作为数组检索并基于''连接.但最重要的是什么&:name

谢谢

ruby ruby-on-rails railscasts ruby-on-rails-3

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

什么"temps.each(&:valid?)"在Ruby中意味着什么?

可能重复:
map(&:name)在Ruby中意味着什么?

什么是&:valid?在发现each意味着什么?我见过.each do |r|或者其他什么,但不确定这个是如何工作的?

ruby ruby-on-rails

4
推荐指数
1
解决办法
2298
查看次数

这个&符号是什么意思?

可能重复:
map(&:name)在Ruby中意味着什么?
你在Ruby中称为&:运算符是什么?

只是看一些railscast并看到这样的代码:

[Category, Product, Person].each(&:delete_all)
Run Code Online (Sandbox Code Playgroud)

我知道它会删除这些模型的所有记录,但我无法找出这&:delete_all意味着什么.

ruby

4
推荐指数
1
解决办法
517
查看次数

Ruby Proc语法

我昨天在这里提出的问题的答案是以下一段Ruby代码:

def overlap?(r1,r2)
  r1.include?(r2.begin) || r2.include?(r1.begin)
end

def any_overlap?(ranges)
  ranges.sort_by(&:begin).each_cons(2).any? do |r1,r2|
  overlap?(r1, r2)
  end
end
Run Code Online (Sandbox Code Playgroud)

我明白了each_cons,但奇怪的&:begin记法是什么?救我脱离语法地狱!

谢谢!

ruby syntax proc-object

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

区别:+和&:+

我有这样的代码

 list << num if num.to_s.split("").map(&:to_i).map(&:factorial).inject(:+) == num
Run Code Online (Sandbox Code Playgroud)

它工作,我想知道如果inject没有&(&符号)前面的工作:+.我要求别人解释的差异之间有什么:+&:+.

ruby

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

使用符号引用Ruby中的块,例如:+,: - ,:*

我正在学习Ruby中符号的使用,并且已经意识到它们主要用作对变量,哈希表中的键的引用,甚至作为在方法中发送块的方式.

我的问题是,什么是符号,例如:+ :- :*,当我在方法中使用它们时引用?

例如,:+用于汇总数组中的所有值:

puts [1,2,3].reduce(:+) 
 => 6
Run Code Online (Sandbox Code Playgroud)

给出与以下相同的结果:

puts [1,2,3].reduce {|sum, i| sum += i}
=> 6
Run Code Online (Sandbox Code Playgroud)

如果我创建自己的版本:+

a = lambda {|sum,i| sum += i}
puts [1,2,3].reduce(&a)
=> 6
Run Code Online (Sandbox Code Playgroud)

因此,我的第一个想法是:+引用{|sum, i| sum += i}作为一个明确的块,但我很难找到确认的信息.

ruby symbols

0
推荐指数
1
解决办法
184
查看次数