相关疑难解决方法(0)

Ruby &ers冒号快捷方式

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

在Ruby中,我知道如果我这样做:

some_objects.each(&:foo)
Run Code Online (Sandbox Code Playgroud)

它是一样的

some_objects.each { |obj| obj.foo }
Run Code Online (Sandbox Code Playgroud)

也就是说,&:foo创建块{ |obj| obj.foo },将其转换为Proc,并将其传递给每个块.为什么这样做?它只是一个Ruby特例,还是有理由为什么这样做呢?

ruby

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

ruby中"&:"运算符的功能是什么?

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

我遇到了一个代码片段,其中包含以下内容

a.each_slice(2).map(&:reverse)
Run Code Online (Sandbox Code Playgroud)

我不知道&:运营商的功能.这是如何运作的?

ruby

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

什么是:+和&:+在Ruby中?

我已经看过好几次,但我无法弄清楚如何使用它们.镐说这些是特殊的快捷方式,但我无法找到语法描述.

我在这样的背景下见过他们:

[1,2,3].inject(:+)
Run Code Online (Sandbox Code Playgroud)

以计算总和为例.

ruby

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

你在Ruby中称为&:运算符是什么?

可能的重复:
Ruby/Ruby on Rails&符号冒号快捷方式
map(&:name)在Ruby中意味着什么?

我正在阅读Stackoverflow并偶然发现以下代码

array.map(&:to_i)
Run Code Online (Sandbox Code Playgroud)

好的,很容易看出这段代码的作用,但我想了解更多关于&:我以前从未见过的构造.

不幸的是,我能想到的只是"lambda",而不是.谷歌告诉我Ruby中的lambda语法是->->(x,y){ x * y }

所以&:除了调用单一方法之外,任何人都知道神秘是什么以及它能做什么?

ruby

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

"(1..4).inject(&:+)"如何在Ruby中工作

我发现Ruby中的这段代码非常有趣

(1..4).inject(&:+)
Run Code Online (Sandbox Code Playgroud)

好的,我知道是什么inject,我知道这段代码基本上相当于

(1..4).inject(0) {|a,n| a + n}
Run Code Online (Sandbox Code Playgroud)

但它究竟是如何运作的呢?

为什么&:+和写块一样{|a,n| a + n}

为什么它不需要初始值?我很好,正常值为0,但(1..4).inject(&:*)也有效,初始值必须为1 ...

ruby

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

map(&:name)在这个Ruby代码中做了什么?

为了更好地理解Ruby,我遇到了上网冲浪的代码:

require 'rubygems'
require 'activeresource'



ActiveResource::Base.logger = Logger.new("#{File.dirname(__FILE__)}/events.log")

class Event < ActiveResource::Base
  self.site = "http://localhost:3000"
end

events = Event.find(:all)
puts events.map(&:name)

e = Event.find(1)
e.price = 20.00
e.save

e = Event.create(:name      => "Shortest event evar!", 
                 :starts_at => 1.second.ago,
                 :capacity  => 25,
                 :price     => 10.00)
e.destroy
Run Code Online (Sandbox Code Playgroud)

我特别感兴趣的是如何events.map(&:name)工作?我看到事件是一个数组,因此它正在调用它的map方法.现在我的问题是,传递给地图的块在哪里创建?符号是什么:在这种情况下的名称?我试图了解它是如何工作的.

ruby ruby-on-rails

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

什么&:意味着在红宝石中,它是一个与符号混合的块?

可能重复:
map(&:name)在Ruby中意味着什么?
Ruby/Ruby on Rails&符号冒号快捷方式

例如,

contacts.sort_by(&:first_name).
Run Code Online (Sandbox Code Playgroud)

我理解这是做什么的,但我不明白&:符号,这意味着什么,它是一个符号(:)与块(&)?我在哪里可以阅读更多相关信息?

ruby

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

如何"取消"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 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
查看次数