pony筆記

helloworld

創建一個文件helloworld.pony

actor Main
  new create(env: Env) =>
    env.out.print("Hello, world!")

之後命令編譯程序

ponyc

這個命令會編譯當前目錄下所有的源文件
這其中,actor用於聲明一個類,而create用於聲明這個類的構造器
而env對象內含常用的stdinstdout, 和 stderr
例如env.out.print用於輸出字符串

定義一個類使用class關鍵字

class Wombat
  let name: String
  var _hunger_level: U64

下劃線_開頭的是私有屬性,let聲明常量  var聲明變量

聲明構造器使用new關鍵字

class Wombat
  let name: String
  var _hunger_level: U64

  new create(name': String) =>
    name = name'
    _hunger_level = 0

  new hungry(name': String, hunger': U64) =>
    name = name'
    _hunger_level = hunger'

通過構造器實例化類

let defaultWombat = Wombat("Fantastibat") // Invokes the create method by default
let hungryWombat = Wombat.hungry("Nomsbat", 12) // Invokes the hungry method

可以爲屬性設置默認值(pony沒有null值)

class Hawk
  var _hunger_level: U64 = 0

class Owl
  var _hunger_level: U64

  new create() =>
    _hunger_level = 42

所有屬性都有默認值的情況下,可以爲類設置無參構造器,用無參構造器實例化類可以不用寫括號

class Forest
  let _owl: Owl = Owl
  let _hawk: Hawk = Hawk

方法

聲明方法使用關鍵字fun
pony沒有return關鍵字,方法的最後一行代碼的值的類型就是方法的類型

class Wombat
  let name: String
  var _hunger_level: U64
  var _thirst_level: U64 = 1

  new create(name': String) =>
    name = name'
    _hunger_level = 0

  new hungry(name': String, hunger': U64) =>
    name = name'
    _hunger_level = hunger'

  fun hunger(): U64 => _hunger_level

  fun ref set_hunger(to: U64 = 0): U64 => _hunger_level = to

posted @ 2022-12-14 15:16  七つ一旋桜  阅读(32)  评论(0)    收藏  举报