ponylang - 没有参数的 RAII 构造函数?
问题描述
为什么Class?
当 no args 构造函数可能出错时表单无效,而 with args 表单有效?可能是尚未考虑的错误或粗糙边缘吗?
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?
但这目前在语法上无效。这似乎是一个逻辑扩展(假设它在语法上不与其他任何内容冲突)。
推荐阅读
- flutter - 没有模拟器的颤振
- curl - curl: (7) 连接 127.0.0.1 端口 3000 失败:连接被拒绝
- sql - 通过调用函数更新列非常慢 - 如何改进?SQL 服务器
- python - 使用对象时面临“列表索引超出范围”错误
- c# - MailKit - SmtpClient Connect 方法冻结
- c# - Azure函数使用实体框架但连接字符串不起作用
- javascript - 为 ag-grid 定义仅一个特定列的自动大小列是可能的吗?
- php - Laravel 与自定义键的多态关系
- javascript - 使用 jQuery.when() 调用两个 Html2Canvas 调用
- r - 将日期和时间与时间戳分开