我知道(begin expr1 expr2 ...)
将评估所有表达式并返回最后一个表达式。
我发现在Chez Scheme中,允许使用begin
而不使用像(begin)
这样的表达式。我使用Chez Scheme作为学习的一部分。当我在控制台(begin)
中写入时,它不会发送语法错误,它只显示没有像我void
那样。
我的问题是,将会返回什么内容?
我认为通过运行(void)
可以获得虚空对象。
但是,当我测试它时,我意识到它不是。
我正在研究Chez Scheme作为编译器课程的一部分,我需要实现一个可以处理特殊字begin
的编译器的一部分。所以我需要知道为什么这甚至可能以及这个函数返回的内容。
编辑:
我正在就此主题添加this link。 我无法完全理解答案。另外,他没有提到返回类型。
答案 0 :(得分:2)
我认为这个问题混淆了<item
android:height="200dp"
android:width="200dp"
android:drawable="@drawable/splash_logo"
android:gravity="center">
</item>
的不同用法。如果您查看关于begin
的{{3}},则会以两种不同的方式使用它:1)使用0或更多&#34;形式&#34;,在这种情况下,表单在语法上是&#34;剪接&#34;进入周围的身体,就好像begin
不在那里(我相信这在编写宏时非常有用); 2)有1个或多个表达式,在这种情况下,它按顺序计算表达式并返回最后一个表达式的结果。
当你谈到&#34;返回值&#34;时,你在谈论begin
作为表达式,但作为表达式(上面的(begin ...)
的第二种形式),它必须采取一个或多个表达式。空begin
必须是(begin)
的第一种形式,它只是简单地拼接&#34;没有&#34; (0形式)进入周围的身体,但它没有被评估&#34;与整个身体的评估分开。