首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ruby方法中&param和:&param的区别

ruby方法中&param和:&param的区别
EN

Stack Overflow用户
提问于 2011-08-14 23:20:43
回答 2查看 198关注 0票数 0

我有定义为def test(&param)def test(:&param)的函数。两者之间的区别是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-14 23:38:02

代码语言:javascript
复制
def test(&block) ...

意味着我们的方法接受一个块:

代码语言:javascript
复制
def test(number, &block)
  yield number
  # same as
  # block.call number
end
test(10) {|a| a+a}
#=> 20
# or
block = proc{|a| a*a}
test 10, &block
#=> 100

def test(:&param)将抛出一个错误。

你也可以调用像method(&:operator)这样的东西

代码语言:javascript
复制
[1,2,3].inject(&:+)
#=> 6

这是相同的

代码语言:javascript
复制
[1,2,3].inject{|sum, i| sum+i }
票数 4
EN

Stack Overflow用户

发布于 2011-08-14 23:26:18

不同之处在于def test(:&param)会导致语法错误,而def test(&param)不会。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7057658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档