【发布时间】:2014-02-08 07:46:43
【问题描述】:
我知道 Ruby 是动态且强类型的,但据我所知,当前的语法不允许在编译时检查参数的类型,因为每个参数都没有明确的类型表示法(或协定)。
如果我想执行编译时类型检查,我有哪些(实际上成熟的)选项?
更新
我的意思是 type-check 类似于典型的静态类型语言。比如C。 例如,C 函数表示每个参数的类型,编译器检查传入的参数是否正确。
void func1(struct AAA aaa)
{
struct BBB bbb;
func1(bbb); // Wrong type. Compile time error.
}
作为另一个例子,Objective-C 通过放置明确的类型信息来做到这一点。
- (id)method1:(AAA*)aaa
{
BBB* bbb = [[AAA alloc] init]; // Though we actually use correctly typed object...
[self method1:bbb]; // Compile time warning or error due to type contract mismatch.
}
我想要这样的东西。
更新 2
另外,我的意思是 compile-time = 在运行脚本之前。我没有更好的词来形容它……
【问题讨论】:
-
请举例...您要检查什么?
-
@ArupRakshit 我更新了问题以添加示例。
-
你有编译器吗?
-
@Eonil 所以你想要 Ruby 中的静态类型?
-
简单回答:不。而且你做错了。你完全错过了鸭子打字的意义。
标签: ruby compile-time typechecking