没有参数的 RAII 构造函数?
RAII constructor without arguments?
为什么当无参数构造函数可能出错时,Class?
形式无效,而带参数形式有效?可能是尚未考虑的错误或粗糙边缘?
class A
new create(x : I32) ? =>
if (x % 2) == 0 then
error
end
class B
new create() ? =>
error
actor Main
new create(env: Env) =>
try
let x = A(1)? // legal
let y = B.create()? // why not `B?`? `B()?` seems to expand to `create().apply()?`
else
env.out.print("exception")
end
这似乎是当前 Pony 的句法限制。对于完全零参数的构造函数调用,您可以使用不带括号的类型名称,如下所示:
let y = B
对于部分调用,您希望可以使用它(仍然没有括号):
let y = B?
但这在语法上目前是无效的。这似乎是一个合乎逻辑的扩展(假设它在语法上不与其他任何内容冲突)。
为什么当无参数构造函数可能出错时,Class?
形式无效,而带参数形式有效?可能是尚未考虑的错误或粗糙边缘?
class A
new create(x : I32) ? =>
if (x % 2) == 0 then
error
end
class B
new create() ? =>
error
actor Main
new create(env: Env) =>
try
let x = A(1)? // legal
let y = B.create()? // why not `B?`? `B()?` seems to expand to `create().apply()?`
else
env.out.print("exception")
end
这似乎是当前 Pony 的句法限制。对于完全零参数的构造函数调用,您可以使用不带括号的类型名称,如下所示:
let y = B
对于部分调用,您希望可以使用它(仍然没有括号):
let y = B?
但这在语法上目前是无效的。这似乎是一个合乎逻辑的扩展(假设它在语法上不与其他任何内容冲突)。