Retourner au contenu associé (journal : Javascript plus rapide que python ! (une suite possible))
Posté par hsyl20 (site web personnel) le 15 juillet 2010 à 00:23. En réponse au journal Javascript plus rapide que python ! (une suite possible). Évalué à 1.
scala> def pouet(a:{def ping: String}) = println("kekidi? " + a.ping) pouet: (a: AnyRef{def ping: String})Unit scala> class Yop { | def ping = "checku" | } defined class Yop scala> val truc = new Yop truc: Yop = Yop@1c45484a scala> pouet(truc) kekidi? checku
scala> trait MyTypeClass { | def ping: String | } defined trait MyTypeClass scala> def pouet(a:MyTypeClass) = println("kekidi? " + a.ping) pouet: (a: MyTypeClass)Unit scala> pouet(truc) :14: error: type mismatch; found : Yop required: MyTypeClass pouet(truc) ^
scala> implicit def yop_mtc(a:Yop): MyTypeClass = new MyTypeClass { | def ping = a.ping | } yop_mtc: (a: Yop)MyTypeClass
scala> pouet(truc) kekidi? checku
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Scala
Posté par hsyl20 (site web personnel) . En réponse au journal Javascript plus rapide que python ! (une suite possible). Évalué à 1.
scala> def pouet(a:{def ping: String}) = println("kekidi? " + a.ping) pouet: (a: AnyRef{def ping: String})Unit scala> class Yop { | def ping = "checku" | } defined class Yop scala> val truc = new Yop truc: Yop = Yop@1c45484a scala> pouet(truc) kekidi? checkuAvec les traits :scala> trait MyTypeClass { | def ping: String | } defined trait MyTypeClass scala> def pouet(a:MyTypeClass) = println("kekidi? " + a.ping) pouet: (a: MyTypeClass)Unit scala> pouet(truc) :14: error: type mismatch; found : Yop required: MyTypeClass pouet(truc) ^Et avec les implicits. Si Yop supporte la type-class MyTypeClass, alors on définit un implicit comme ça :scala> implicit def yop_mtc(a:Yop): MyTypeClass = new MyTypeClass { | def ping = a.ping | } yop_mtc: (a: Yop)MyTypeClassCe qui permet ensuite d'écrire, sachant que truc est de type Yop :