如果没有声明方法的返回类型,是否仍然可以获得在宏中使用的推断返回类型?
class Record
def explicit : String
"name"
end
def inferred
["a", "b"]
end
end
# The following works:
puts {{Record.methods.find { |m| m.name.id == "explicit".id }.return_type }}
# The following does not (because .return_type
# is useful when the method explicitly states the return type):
puts {{Record.methods.find { |m| m.name.id == "inferred".id }.return_type }}
答案 0 :(得分:3)
不,宏在任何类型推断完成之前运行,并且无法从宏访问推断类型。这是因为在类型检查器可以正确推断返回类型之前,必须完全展开宏。