在Io语言中,您如何看待"if"的实现?

lab*_*nth 3 reflection iolanguage

我使用"getSlot(" 方法名称 ")来探索Core和Object的一些内容,以了解一些基本方法是如何实现的.我很好奇if方法是如何编写和尝试的

Io> Object getSlot("if")
==> Object_if()
Io> Object getSlot("Object_if()")
==> nil
Run Code Online (Sandbox Code Playgroud)

这些都没有提供信息.有没有一种方法,以反映/检查/打印此(和其他Object_ keywordishword()的话)?

jer*_*jer 9

我前段时间在纽约与一个小组进行了一次谈话,其中包括if如果你对机制很好奇的洁净室实施.你可以在这里看到它.

更直接的,当你看到:

==> Object_if()

在REPL,那是什么告诉你的是,if是绑定到该对象的符号Object这是用C实现的.也就是说,该"办法"实际上是一个CFunction对象,而不是一个Block对象.只有Block对象在REPL中显示其源.

  • 哇,我得到了着名的Jeremy Tregunna的回复!当我读到这个回复时,我再也不会洗衣服或更换我所穿的衬衫了.你可以在REPL中看到几乎所有方法的内部工作方式非常酷 - 我很高兴知道如果我对REPL中没有显示的几个方法感到好奇,我可以查看C代码. (2认同)