我遇到了一个可能很愚蠢的问题,但是我一生都无法找到任何有关此事能否完成的信息。
基本上,我知道调用array.each do(&method)
将方法转换为proc并使用每个产生的值对其进行调用。我遇到的问题是尝试使用类方法执行相同操作。
我已经写了一个Card
类,想用这样的东西解析一个字符串。
%w{4S 5D 9H 1C 3S}.map(&Card.safe_parse)
我试过了
.map(Card.method(:safe_parse).to_proc)
和
.map(&Card.method(:safe_parse))
但没有任何效果。显然,它可以使用,.map { |x| Card.safe_parse x }
但是感觉好像有一种我看不到的聪明方法,并且我试图更好地理解红宝石块。
谢谢!
长途是最常规的方法,而短途是您的最后一个示例:
%w{4S 5D 9H 1C 3S}.map(&Card.method(:safe_parse))
仅当safe_parse
是模块方法而不是mixin方法,或者换句话说,您已在模块末尾将其定义为self.safe_parse
或完成extend self
时,此方法才有效。
据我所知,不可能instance_method
直接在mixin方法上使用,因为这些方法缺少实例上下文。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句