作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
考虑这样的代码:
module Foo
# returns a copy of self
# @return [ ___ ]
def returns_new_self
self.class.new
end
end
class Bar
include Foo
end
class Zap
include Foo
end
有了这个,Bar.new.returns_new_self
将返回另一个 Bar
,同样适用于 Zap.new.returns_new_self
.
我想要 retuns_new_self
YARD-用返回类型记录。
如果我能做类似 @return [Self]
的事情就好了作为Self
在 Rust 中。
我可以做类似的事情吗?
编辑:(回复@spickermann)
实际代码是这样的:
module MultipleItemBehaviour
# @return [Integer]
def count; not_implemented end
# @return [Enumerator]
def each_count
return enum_for(:each_count) unless block_given?
count.times do
yield single_item
end
end
# @return [ __SELF__ ]
def single_item; not_implemented end
private def not_implemented
raise NotImplementedError, "message"
end
end
class SomeItemWhichIsABunch
include MultipleItemBehaviour
attr_reader :count
def initialize(count)
@count = count
end
def single_item
self.class.new(1)
end
end
SomeItemWhichIsABunch.each_count.take(5).map(&:something)
我知道这有点偏离 OOP(最好将该项目拆分为容器和具体项目),
但由于它是一堆完全相同的东西,而且它已经是存储在数据库中的方式,所以我决定要返回一个这样的枚举器。
编辑 2:我正在通过 --embed-mixin
选择码。 incluser Class文档中的当前结果是这样的:(抱歉模块名称不同)
最佳答案
不幸的是,YARD 无法做到这一点。最好的替代方法是在您的 Foo#returns_new_self
文档中明确说明。就个人而言,我完全可以接受
module Foo
##
# Returns a new instance of the object's class.
#
# @return [Object]
def returns_new_self
self.class.new
end
end
class Bar
include Foo
end
class Zap
include Foo
end
生成以下文档:
关于ruby - 如何在 YARD 中引用当前类作为返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56287625/
我是一名优秀的程序员,十分优秀!