print 是语言的重要功能。
我从青年时代就学过 Python, JavaScript, C, C++, Rust
我可是身经百战见得多了,主流的哪个语言我没见过。
魔法方法实现复用组件。
class Foo:
def __str__(self):
...
print(Foo())
或者
@dataclass
class Foo:
...
print(Foo())
对象 prototype 的 toString 方法
Foo.prototype.toString = () => "xxx"
console.log(Foo());
或者 ES6 引入的 class 语法糖
class Foo{
toString(){
...
}
}
直接打印 field.
struct Foo{
}
const char * print_foo(Foo const* foo){
printf("%......", foo->fields, ....);
}
Foo foo = Foo{.fileds=xxx, ...}
print_foo(&foo);
用 sprintf 序列化。但是由于需要 malloc, 还需要返回长度,此处略。
由于 C 采用 %x
格式化,无法自定义格式化。
重载 <<
class Foo{
public:
...
}
ostream& operator<<(ostream& os, const Foo& foo)
{
os << foo.x << ...;
return os;
}