タグ

traitに関するt2y-1979のブックマーク (2)

  • Scalaのtrait、Rustのtrait、そしてScalaのimplicit - Don't Repeat Yourself

    Scala の trait と Rust の trait は微妙に使い方が異なる、とよく質問を受けます。たしかに、使い心地は微妙に異なるかもしれません。Scala はオブジェクト指向を中心に設計された言語ですが、Rust はそれを中心に設計されているとは言えません*1。こういった言語設計の差が、trait の使い心地の違いを生み出していると私は思っています。 両者の trait には、共通した特徴もあります。共通した処理をまとめあげるという意味では同じ目的をもっているといえますし、また、「犬は動物である」「は動物である」の共通性を示すことで、共通したものをひとまとめに処理しきることもまた可能です。 Scala には implicit という強力な機能が存在します。これは柔軟でスケーラブルなソフトウェアデザインを可能にする Scala の特徴のひとつです。非常にすばらしい機能です。この機能

    Scalaのtrait、Rustのtrait、そしてScalaのimplicit - Don't Repeat Yourself
  • Rustにおけるオブジェクト指向の考え方 - Qiita

    トレイト Rustにクラスやプロトタイプチェーンは存在しない。そのかわり、トレイトを使ってオブジェクト指向プログラミングを実現する。トレイトはメソッドを集めたものだ。トレイトを型に実装することによって、その型の値がメソッドを提供するようになる。 トレイトの定義 say_helloメソッドを提供するSayHelloトレイトを作ってみよう。 trait SayHello : std::fmt::Display { fn say_hello(&self) { println!("Hello. This is {}.", self); } } std::fmt::Displayとは何かというと、これもトレイトだ。SayHello : std::fmt::Displayというのは、SayHelloトレイトを実装するには、まずstd::fmt::Displayトレイトを実装する必要があるということを表

    Rustにおけるオブジェクト指向の考え方 - Qiita
  • 1