RAII конструктор без аргументов? - PullRequest
0 голосов
/ 23 декабря 2018

Почему форма Class? не действительна, когда конструктор no args может выдать ошибку, в то время как форма с 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

1 Ответ

0 голосов
/ 23 декабря 2018

Это похоже на синтаксическое ограничение в текущем Пони.Для полного вызова конструктора с нулевым аргументом вы должны использовать имя типа без круглых скобок, например:

let y = B

Для частичного вызова вы можете ожидать, что вы можете использовать это (все еще без скобок):

let y = B?

Но в настоящее время это синтаксически недействительно.Это выглядит как логическое расширение (при условии, что оно не конфликтует ни с чем синтаксически).

...