首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将参数传递给define_method?

如何将参数传递给define_method?
EN

Stack Overflow用户
提问于 2008-09-18 03:03:14
回答 3查看 61.4K关注 0票数 162

我想传递一个参数给一个使用define_method定义的方法,我该怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-09-18 03:06:02

传递给define_method的块可以包含一些参数。这就是您定义的方法接受参数的方式。当您定义一个方法时,您实际上只是给块起了昵称,并在类中保留了对它的引用。参数随块一起提供。所以:

代码语言:javascript
复制
define_method(:say_hi) { |other| puts "Hi, " + other }
票数 207
EN

Stack Overflow用户

发布于 2008-09-20 21:02:34

除了Kevin Conner的回答:块参数不支持与方法参数相同的语义。不能定义默认参数或块参数。

这只在Ruby 1.9中通过新的替代语法"stabby lambda“修复,该语法支持完整的方法参数语义。

示例:

代码语言:javascript
复制
# Works
def meth(default = :foo, *splat, &block) puts 'Bar'; end

# Doesn't work
define_method :meth { |default = :foo, *splat, &block| puts 'Bar' }

# This works in Ruby 1.9 (modulo typos, I don't actually have it installed)
define_method :meth, ->(default = :foo, *splat, &block) { puts 'Bar' }
票数 60
EN

Stack Overflow用户

发布于 2016-05-03 21:50:10

在2.2版本中,您现在可以使用关键字参数:https://robots.thoughtbot.com/ruby-2-keyword-arguments

代码语言:javascript
复制
define_method(:method) do |refresh: false|
  ..........
end
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/89650

复制
相关文章

相似问题

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