原始实现中的打印标准
Printing standard in raw implementations
我正在制作我的小玩具堆栈语言,并围绕字节码的核心概念展开它,字面上就像 JVM。
我想添加的操作码之一是 print_var
函数,它将打印局部变量的值。我的问题是,我使用哪个打印功能? println()
,或 print()
?
其实,这不是使用什么的问题,而是这个流程在实际应用中的标准是什么?系统是简单地设计为 print()
,然后围绕 print()
函数构建一个 println()
函数,还是它们都是手拉手做单独的事情?
我正在查看 Java 的 PrintWriter
源代码,它在 System.out.println()
中使用,其定义如下:
public void println(boolean x) {
synchronized (lock) {
print(x);
println();
}
}
显然 Java 制作了一个 print()
函数并基于它创建了 println()
。许多其他主要语言也是这样吗?
让我们看看:
- C: 有 printf --- 没有 println
- C++:有 ostream -- 没有 println
- C#:具有 WriteLine(和写入)
- Haskell: 有 putStr 和 putStrLn
...
长话短说:你可以找到两者。因此,只需实施 您 认为最适合您的要求的一般方法即可。换句话说:简单地看一下 other 操作码,你 have/want 来实现并评估它们是否更多关于 "convenience" (所以你会有 print 和 println ),或者如果他们专注于提供 "elementary building blocks"(那么您可能只提供印刷品)。
除此之外:请记住提供 println() 有一个 主要 优势:用户无需担心不同操作的不同 "new line" 字符系统。
我正在制作我的小玩具堆栈语言,并围绕字节码的核心概念展开它,字面上就像 JVM。
我想添加的操作码之一是 print_var
函数,它将打印局部变量的值。我的问题是,我使用哪个打印功能? println()
,或 print()
?
其实,这不是使用什么的问题,而是这个流程在实际应用中的标准是什么?系统是简单地设计为 print()
,然后围绕 print()
函数构建一个 println()
函数,还是它们都是手拉手做单独的事情?
我正在查看 Java 的 PrintWriter
源代码,它在 System.out.println()
中使用,其定义如下:
public void println(boolean x) {
synchronized (lock) {
print(x);
println();
}
}
显然 Java 制作了一个 print()
函数并基于它创建了 println()
。许多其他主要语言也是这样吗?
让我们看看:
- C: 有 printf --- 没有 println
- C++:有 ostream -- 没有 println
- C#:具有 WriteLine(和写入)
- Haskell: 有 putStr 和 putStrLn ...
长话短说:你可以找到两者。因此,只需实施 您 认为最适合您的要求的一般方法即可。换句话说:简单地看一下 other 操作码,你 have/want 来实现并评估它们是否更多关于 "convenience" (所以你会有 print 和 println ),或者如果他们专注于提供 "elementary building blocks"(那么您可能只提供印刷品)。
除此之外:请记住提供 println() 有一个 主要 优势:用户无需担心不同操作的不同 "new line" 字符系统。