新手问题 ruby 做强类型 DSL 的问题

redcandy · 2019年12月22日 · 最后由 redcandy 回复于 2019年12月29日 · 2602 次阅读

比如现在要做一个有类似 C 语言类型检查的 dsl 但是 rb 不会把一个变量规定为一个类型 a = A.new a = B.new 如果要做类型检查就必须自己手工(没做过,应该很不好做吧) 问题:如何用 rb 做一个强类型 DSL 呢?(不自己做类型检查)

你把要被检查的 ruby 代码发出来一下看看,可以吗?

我以前也是这样想的。后来还是觉得“约定大于配置”这句话比较实际。

你也可以搜索 ruby sorbet

u4crella 回复

其实我没有真的尝试过做这样的一个 DSL 只是做别的东西的时候联想到了=。=

我记得 Dry.rb 实现了一个类似的东西

两种方法:

  1. 用 Sorbet 加类型标注,未来就是 Ruby 默认集成的组件了
  2. https://github.com/egonSchiele/contracts.ruby 这个有知名项目在用

感谢楼上两位老哥回复。 我觉得 Sorbet 看着挺靠谱的

redcandy 回复

需求是?

zzz6519003 回复

没需求。只是偶然想到的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号