タグ

Scalaとselfに関するslay-tのブックマーク (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
  • C# 使いから見てうらやましい Java8 の default 実装の使い方 - ぐるぐる~

    Java8 から追加されるインターフェイスの default 実装ですが、C# の拡張メソッドに似てますよね。 実際、このどちらも「シンインターフェイス」を定義するだけで「リッチインターフェイス」が手に入ります。 しかし、C# の拡張メソッドと Java のインターフェイスの default 実装には、それぞれの利点と欠点があります。 拡張メソッドの利点 拡張メソッドの利点は、インターフェイスの実装者だけでなく、 インターフェイスの使用者に対してもインターフェイスの拡張が開かれている点です。 既存の型ですら、後付けでメソッドを追加することができるということです。 using System; public static class StringExtension { // インターフェイスでなくても、どんな型に対しても拡張可能 public static int ToInt(this str

    C# 使いから見てうらやましい Java8 の default 実装の使い方 - ぐるぐる~
  • 1