其他方法的参数传递方法,我感兴趣的如何通过方法与红宝石参数。我需要通过灵活的功能设置来实现类似命令模式的功能。示例=> C#中的lambda函数。与红宝石
与红宝石
回答
红宝石lambda
功能定义如下:
a.lambda{ puts "Hello"}
a.call #=> Hello
a = lambda{|str| puts str }
a.call("Hello world !!!") #=> Hello world !!!
a = lambda{|*args| puts args.join(' ')}
a.call("Hello", "World") #=> Hello World
可以动态调用它们的参数列表以及方法。以下只是其中一种方式:
class Foo
def foo(what)
puts what
end
end
Foo.new.send(:what, "something") # ==> "something"
而@ coedit的回应是另一种方式.. :) – 2013-02-27 18:07:18
好的,这是有趣的一点。但我怎样才能将代码传递给另一个方法并从那里调用它?你能否提供一些简单的例子。 – Ph0en1x 2013-02-27 20:32:56
您可以按照您在Ruby中执行大多数操作的方式执行命令模式:使用块。
class Soldier
def initialize(&block)
@command = block
end
def action
@command.call if @command
end
end
s = Soldier.new do #the block
line = "We are drill machines, drill machines feel no pain"
2.times{ puts line }
puts line.upcase
end
puts "Action:"
s.action
也有可能在那里使用产量构造? – Ph0en1x 2013-02-27 20:39:58
- 1. 与红宝石
- 2. 与红宝石
- 3. 与红宝石
- 4. 与红宝石2.1.1
- 5. REST与红宝石?
- 6. clojure与红宝石
- 7. Apache与红宝石 - 宝石问题
- 8. 红宝石宝石问题与升级
- 9. 红宝石散列在红宝石
- 10. 宝石安装红宝石
- 11. 调试宝石红宝石
- 12. Twitter的红宝石宝石
- 13. 红宝石宝石 - LoadError
- 14. 错误红宝石宝石
- 15. 卸载红宝石宝石
- 16. 红宝石宝石文档
- 17. 红宝石1.8.7与红宝石1.9+性能
- 18. 红宝石机械化与jRuby 1.6.0(红宝石1.9.2)
- 19. 红宝石操作与红宝石阻止ppoll
- 20. 帮助与红宝石
- 21. 红宝石哈希与环
- 22. 红宝石File.read与File.gets
- 23. Heroku部署与红宝石
- 24. 拆分与红宝石
- 25. Erroy与红宝石(Errno:EN0ENT)
- 26. 问题与红宝石
- 27. 麻烦与红宝石
- 28. 红宝石安装与RVM
- 29. 问题与红宝石
- 30. 红宝石与LDAP或AD
我不明白你的问题,你能否给我们提供一个例子? – Intrepidd 2013-02-27 17:59:43