Wait the light to fall

Raku 中的笑脸

焉知非鱼

+++

在 Raku 中在调用者的类型身上使用 :D:U 类型笑脸来制造 type/instance 方法:

class Foo {
    multi method foo (Foo:D:) { say "instance"    }
    multi method foo (Foo:U:) { say "type object" }
}

Foo    .foo; # 输出 type object
Foo.new.foo; # 输出 instance

# Can use compile time vars to aovid re-typing the actual name everywhere:
class Bar {
  multi method foo (::?CLASS:D:) { say "instance"    }
  multi method foo (::?CLASS:U:) { say "type object" }
}

Bar    .foo; # "type object"
Bar.new.foo; # "instance"