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

redcandy · December 22, 2019 · Last by redcandy replied at December 29, 2019 · 2603 hits

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

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

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

你也可以搜索 ruby sorbet

Reply to u4crella

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

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

两种方法:

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

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

Reply to redcandy

需求是?

Reply to zzz6519003

没需求。只是偶然想到的

You need to Sign in before reply, if you don't have an account, please Sign up first.