プログラミング言語 Scala Wiki内検索 / 「TourOfScala0」で検索した結果

検索 :
  • TourOfScala0
    Scala ひと巡り (A Tour of Scala) 原ページ Published on The Scala Programming Language (http //www.scala-lang.org) . By admin . Created 2008-07-05, 20 31 ●学習者の参考になればと思って訳してみましたが、誤訳の可能性大ですので、正しいことを知りたい方は必ず原文をお読みください。ご意見その他は、このページの下へ投稿してください。 Scala は簡潔でエレガント、そして型安全な方法で共通のプログラミングパターンを表現できるよう設計された現代的なマルチパラダイム・プログラミング言語です。オブジェクト指向と関数型言語の特質をスムーズに統合します。 Scala はオブジェクト指向言語です すべての値がオブジェクトである [...
  • TourOfScala
    Scala ひと巡り (A Tour of Scala) 原ページ Published on The Scala Programming Language (http //www.scala-lang.org) . By admin . Created 2008-07-05, 20 31 Scala は簡潔でエレガント、そして型安全な方法で共通のプログラミングパターンを表現できるよう設計された現代的なマルチパラダイム・プログラミング言語です。 オブジェクト指向の特徴と関数型言語の特質をスムーズに統合します。 Scala はオブジェクト指向言語です すべての値がオブジェクトである [1]という意味で、Scala は純粋なオブジェクト指向言語です。オブジェクトの型と振る舞いをクラス [2]とトレイト [3]によって記述します。 クラス...
  • TourOfScala1
    Scala ひと巡り 抽象型 (Abstract Types) 原ページ Scala では、クラスは値(コンストラクタ・パラメータ)と(もしクラスがジェネリック [16]なら)型でパラメータ化されます。単に規則に従って、オブジェクトメンバーとして値を持てるというばかりではありません; 値と同様に、型はオブジェクトのメンバーです。さらに、メンバーの両形式とも、具象あるいは抽象で構いません。 次の例は、クラス Buffer のメンバーとして、延期された値定義と抽象型定義の両方を定義しています。 abstract class Buffer { type T val element T } 抽象型はその正体が正確には知られていない型です。上記の例で、我々は、クラス Buffer の各オブジェクトが 型メンバー T を持つことだけを知ってい...
  • TourOfScala3
    Scala ひと巡り sealed クラス (Sealed Classes) 原ページ sealed クラスは、継承するテンプレートを継承されるクラスと同じソースファイル中で定義する場合を除き、直接には継承できません。しかし、sealed クラスのサブクラスはどこででも継承できます。 sealed クラスは sealed 修飾子を使って定義できます。 もしパターンマッチのセレクタが sealed クラスのインスタンスなら、パターンマッチングのコンパイル時に、与えられたパターンセットが網羅的ではないと診断する警告が出ます。すなわち、実行時に MatchError [60] が発生する可能性があるということです。 @unchecked アノテーション [47] をマッチ式のセレクタに適用すると、そうでなければ発せられるはずの、非網羅的パターンマッチに...
  • TourOfScala2
    Scala ひと巡り ジェネリッククラス (Generic Classes) 原ページ Java 5 (aka.JDK 1.5 [58])と同じように、Scala は、型がパラメータ化されたクラスを組み込でサポートしています。そのようなジェネリッククラスは、コレクションクラスの開発に特に役立ちます。 次はこのことを示す例です class Stack[T] { var elems List[T] = Nil def push(x T) { elems = x elems } def top T = elems.head def pop() { elems = elems.tail } } クラス Stack は、任意の要素型 T の命令型(ミュータブル 更新可能な)スタックをモデル化します。型パラメータの使用...
  • Tour_top
    トップ Turel 1 Introduction A Tour of the Scala Programming Language Scalaツアー Scala is a modern multi-paradigm programming language designed to express common programming patterns in a concise, elegant, and type-safe way. Scalaはモダンなデザインのマルチパラダイムプログラミング言語で、簡潔、エレガントかつ型に安全な方法で一般的なプログラミングパターンを表現するためにデザインされています。 It smoothly integrates features of object-oriented and functional languages....
  • CodeOfScalaByExampleChap2
    scala def sort(xs Array[Int]) { | def swap(i Int, j Int) { | val t = xs(i); xs(i) = xs(j); xs(j) = t | } | def sort1(l Int, r Int) { | val pivot = xs((l + r) / 2) | var i = l; var j = r | while (i = j) { | while (xs(i) pivot) i += 1 | while (xs(j) pivot) j -= 1 | if (i = j) { | ...
  • CodeOfScalaByExample
    Scala By Example のコード Chapter 2 Chapter 2 の Quicksort
  • Scala練習問題
    初心者の為の練習問題 原文はScala exercises for beginnersを参照の事。 関数型言語の初心者向けの良い課題だと思うのだが。...が、関数型言語に不慣れだと、そもそもどんな関数を作る事が期待されているのか判んないかもしれないなぁ。(メソッド名とか関数の型から大体の見当がつくかな?) ソースコード中の error("課題") の部分を自分の書いたコードで置き換える事が期待されています。 初心者の回答を自動で採点する為に、scalacheck で回答の正当性を検証する為の方法を誰か解説しない? // 下記の List のメソッドは使用してはならない // * length // * map // * filter // * (および ++ のようなその変形) // * flatten // * flatMap...
  • Example4.2
    4.2 パラメータ def を使って、パラメータを持った関数を定義できます。たとえば scala def square(x Double) = x * x square (Double)Double scala square(2) unnamed0 Double = 4.0 scala square(5 + 3) unnamed1 Double = 64.0 scala square(square(4)) unnamed2 Double = 256.0 scala def sumOfSquares(x Double, y Double) = square(x) + square(y) sumOfSquares (Double,Double)Double scala sumOfSquares(3, 2 + 2) un...
  • ScalaByExample和訳
    Scala By Example の和訳 第 1 章 はじめに 第 2 章 最初の例 第 3 章 アクターとメッセージによるプログラミング 第 4 章 式と簡単な関数 第 5 章 第一級の関数 第 6 章 クラスとオブジェクト 第 7 章 ケースクラスとパターンマッチング 第 8 章 ジェネリックな型とメソッド 第 9 章 リスト 第 10 章 For内包表記 第 11 章 ミュータブルな状態 第 12 章 ストリームによる計算 第 13 章 イテレータ 第 14 章 遅延評価val 第 15 章 暗黙の引数と変換 第 16 章 Hindley/Milner 型推論 第 17 章 並列処理の抽象 和訳 PDFはここです reStr...
  • メニュー
    メニュー トップページ チュートリアル (A Scala Tutorial for Java Programer 和訳) Scala By Example 和訳 Scala By Example のコード 言語仕様 2.8 (Language Specificaton 2.8 試訳) Scala ひと巡り (A Tour of Scala 和訳) SIDライブラリ(Scala Improvement Document Libaray和訳) その他の資料 リンク集 プラグイン @ウィキ ガイド @wiki 便利ツール @wiki 更新履歴 取得中です。
  • トップページ
    プログラミング言語 Scala このWikiの目的は? Scalaのマニュアルの日本語訳を作成する。首尾よく日本語訳が完成したら、www.scala-lang.orgに置いてもらうように頼むつもり。-- 完成したのを連絡したのだけど、全然本家サイトに置いて貰えない...。 →置いてあるようです。Translations of the Scala Manuals ScalaのTipsなどの情報をまとめる。 使い方 普通に自由にWikiとして自由に編集して下さい。spam投稿で荒れたりするまでは、自由に編集出来る様にしておきます。 ご意見や不具合などありましたら管理人(tmiya@bu.iij4u.or.jp)までご連絡下さい。 もう何冊も日本語でのScala解説本が出たので管理人は和訳プロジェクトを放置状態です。このサイトの翻訳文を管理者がPDF化の作業は実施しませんのでご了承下さい。 ...
  • tour-r-menu
    Scala ひと巡り 抽象型 アノテーション クラス ケースクラス 事前定義された classOf 関数 複合型 シーケンス内包表記 抽出子オブジェクト ジェネリッククラス 暗黙のパラメータ 内部クラス ミックスインクラス合成 関数のネスト 無名関数の構文 カリー化 型依存クロージャの自動構築 オペレータ 高階関数 パッケージ パターンマッチィング 多相的メソッド 正規表現パターン sealed クラス トレイト 上限 型境界 下限 型境界 明示的に型付けられた自己参照 サブクラス化 ローカルな型推論 統一された型 変位指定 ビュー XML 処理
  • actor-short-tuto
    Scala アクター 簡易チュートリアル (Scala Actors A Short Tutorial) By phaller Created 2007-05-24, 08 26 はじめに (Introduction) マルチコアプロセッサの到来で並行プログラミングは不可欠になりました。並行性に関する Scala の主要な構文はアクターです。アクターは基本的に、メッセージ交換で通信する並行プロセスです。アクターは、メッセージ送信に関連するメソッドを起動する、アクティブなオブジェクトの形態と見ることもできます。 Scala アクターライブラリは、同期、非同期メッセージ送信の両方を提供します(前者は、複数の非同期メッセージ交換によって実装されます)。さらに、アクターは、リクエストを非同期に処理するフューチャ(*1)を使って通信しますが、その応答を待つことを可...
  • Spec2.8Chap12b
    12.3 標準的な参照クラス (Standard Reference Classes) This section presents some standard Scala reference classes which are treated in a special way in Scala compiler - either Scala provides syntactic sugar for them, or the Scala compiler generates special code for their operations . Other classes in the standard Scala library are documented in the Scala library documentation by HTML pages . この節では、S...
  • Spec2.8Chap10a
    第 10 章 XML 式とパターン (XML Expressions and Patterns) By Burak Emir This chapter describes the syntactic structure of XML expressions and patterns . It follows as closely as possible the XML 1.0 specification [W3C], changes being mandated by the possibility of embedding Scala code fragments . この章では XML 式とパターンの文法構造を記述します。 可能な限りしっかりと XML 1.0 仕様書[W3C]および、 今後の Scala コードの埋め込みで要求される変更に従います。 ...
  • Spec2.8Chap6c2
    6.16 条件式 (Conditional Expressions) 構文 Expr1 = if ( Expr ) {nl} Expr [[semi] else Expr] The conditional expression if (e1) e2 else e3 chooses one of the values of e2 and e3 , depending on the value of e1 . The condition e1 is expected to conform to type Boolean. The then-part e2 and the else-part e3 are both expected to conform to the expected type of the condit...
  • Tutorial_5
    トップ チュートリアル和訳 5 Classes 5 クラス 前に見たように、Scala はオブジェクト指向言語であり、それゆえにクラス*2の概念があります。Scala のクラスは、Java の構文と似た構文で宣言します。重要な違いは Scala のクラスはパラメータを持てるということです。以下の複素数の定義で示します。 class Complex(real Double, imaginary Double) { def re() = real def im() = imaginary } この複素数クラスは2つの引数、複素数の実部と虚部を取ります。これらの引数は Complex クラスのインスタンスを生成する時に、new Complex(1.5, 2.3) のように渡されます。このクラスは2つのメソッド、re と im を持ち、実部と虚部へのアク...
  • Spec2.8Chap12a
    第 12 章 Scala 標準ライブラリ (The Scala Standard Library) Scala 標準ライブラリは、多数のクラスとモジュールを備えた scala パッケージからなります。以下で、それらのいくつかについて説明します。 12.1 ルートクラス (Root Classes) Figure 12.1 illustrates Scala s class hierarchy. The root of this hierarchy is formed by class Any . Every class in a Scala execution environment inherits directly or indirectly from this class . Class Any has two direct subclasses...
  • Spec2.8Chap11a
    第 11 章 ユーザー定義アノテーション (User-Defined Annotations) 構文 Annotation = @ SimpleType {ArgumentExprs} ConstrAnnotation = @ SimpleType ArgumentExprs User-defined annotations associate meta-information with definitions . A simple annotation has the form @c or @c(a1,...,an). Here, c is a constructor of a class C , which must conform to the class scala.Annotation . ...
  • Spec2.8Chap1a
    第 1 章 字句構文 Scala programs are written using the Unicode Basic Multilingual Plane (BMP) character set; Unicode supplementary characters are not presently supported. This chapter defines the two modes of Scala s lexical syntax, the Scala mode and the XML mode. If not otherwise mentioned, the following descriptions of Scala tokens refer to Scala mode, and literal characters c refer to the ASCI...
  • Spec2.8Chap3a
    第 3 章 型 (Types) 構文 Type = FunctionArgTypes = Type | InfixType [ExistentialClause] FunctionArgTypes = InfixType | ( [ ParamType { , ParamType } ] ) ExistentialClause = forSome { ExistentialDcl {semi ExistentialDcl} } ExistentialDcl = type TypeDcl | val ValDcl Infi...
  • Tutorial_2
    トップ Tutorial 2 A first example 2 最初の例 最初の例として、標準的な Hello world プログラムを用います。これはあまり興味深いとは言えませんが、Scala 言語に関する知識をあまり必要とせずに、Scala ツールの使い方を簡単に示すことができます。このようになります。 object HelloWorld { def main(args Array[String]) { println("Hello, world!") } } Java プログラマにはプログラムの構造はお馴染みのものでしょう。main と呼ばれる1つのメソッドがあり、main はパラメータとしてコマンドライン引数を文字列配列として受け取ります。メソッドの本体では定義済みメソッドである println を、友好的な挨拶文...
  • Tutorial和訳
    トップページ チュートリアル和訳 A Scala Tutorial for Java Programmer の和訳 Based on A Scala Tutorial for Java Programmer version 1.3 下記のWikiページは version 1.3 (July 13,2010) です。英文は表示されませんが、編集ページ上にコメントで残してあります。加筆・修正等はどうぞご自由に。 1. はじめに 2. 最初の例 3. Javaとの連携 4. 全てはオブジェクト 5. クラス 6. ケースクラスとパターンマッチング 7. トレイト 8. ジェネリシティ 9. まとめ 翻訳文の PDFはこちらです。          &n...
  • Spec2.8ChapBa
    Chapter B 変更履歴 バージョン 2.8.0 中の変更 お終いのカンマ (Trailing commas) 式、引数、型あるいはパターンシーケンス中のお終いのカンマは、 もうサポートされません。 バージョン 2.8 中の変更(開発中) Changed visibility rules for nested packages (where done?) Changed visibility rules in §2 so that packages are no longer treated specially . ネストしたパッケージの可視性規則を変更(どこでした?) §2 中の可視性規則を、パッケージが特別扱いされないように変更した。 Added section §3.5.3 on weak con...
  • Spec2.8Chap8b
    8.2 型パターン (Type Patterns) 構文 TypePat = Type Type patterns consist of types, type variables, and wildcards . A type pattern T is of one of the following forms 型パターンは、型、型変数、ワイルドカードからなります。 型パターン T は、次の形の 1 つをとります。 ・ A reference to a class C , p.C , or T#C . This type pattern matches any non-null instance of the given class . Note that the prefix of the class, if it is ...
  • Spec2.8Chap9a
    第 9 章 トップレベル定義 (Top-Level Definitions) 9.1 コンパイル単位 (Compilation Units) 構文 CompilationUnit = { package QualId semi} TopStatSeq TopStatSeq = TopStat {semi TopStat} TopStat = {Annotation} {Modifier} TmplDef | Import | Packaging | PackageObject ...
  • Tutorial_7
    トップ チュートリアル和訳 7 Traits 7 トレイト スーパークラスからコードを継承する以外にも、Scalaでは1つあるいは複数のトレイトからコードをインポートできます。 Javaプログラマがトレイトとは何かを理解する一番簡単な方法は、コードを含むことも可能なインターフェイスとみなすことでしょう。Scalaでは、あるクラスがトレイトから継承した場合、そのトレイトのインターフェイスを実装し、そのトレイトに含まれるコードも全て継承します。 トレイトの有用性を見るために、古典的な例である、順序付きオブジェクトを見てみましょう。あるクラスのオブジェクト同士を比較できると、例えばソートしたりする場合など、しばしば役に立ちます。Javaでは、比較可能なオブジェクトは Comparable インターフェイスを実装します。Scalaでは、Comparable...
  • Spec2.8Chap3b
    3.3 非値型 (Non-Value Types) The types explained in the following do not denote sets of values, nor do they appear explicitly in programs.They are introduced in this report as the internal types of defined identifiers. 次に説明する型は、値の集合を表しているわけではなく、 また、プログラム中に明示的に現れるわけではありません。 これらは、定義された識別子の内部型としてこのレポートで紹介しています。 3.3.1 メソッド型 A method type is denoted internally as (Ps)U , where (Ps)...
  • 28-pkgobj-a
    パッケージオブジェクト (package_objects) Martin_Odersky, Lex Spoon September 15, 2010 2.8 まで、あなたがパッケージに入れることができた唯一のものはクラス、トレイトとスタンドアローンのオブジェクトでした。パッケージのトップレベルには最もよく使われる定義が置いてあります。しかし Scala プログラミング言語バージョン 2.8 にできることは、それに留まりません。クラス内のどのような種類の定義も、パッケージのトップレベルに置けます。もしパッケージ全体のスコープに入れたいヘルパーメソッドがあるなら、どうぞパッケージのトップレベルの適切な場所に入れてください。 そうするには、パッケージオブジェクトの中に定義を入れます。各パッケージは 1 つのパッケージオブジェクトを持てます。パッケージオブジェクト中に置かれたど...
  • Example17.5]
    17.5 Semaphores 17.5 セマフォ A common mechanism for process synchronization is a lock (or semaphore). A lock offers two atomic actions acquire and release. Here s the implementation of a lock in Scala プロセス同期の一般的なメカニズムはロック(あるいはセマフォ)です。ロックは2つのアトミックなアクションを提供します。すなわち、獲得と解放です。次は Scala におけるロックの実装です。 package scala.concurrent class Lock { var available = true def acquire = syn...
  • Tutorial_1
    トップ Tutorial 1 はじめに 1 はじめに この文書は Scala 言語とそのコンパイラについて簡単に紹介するものです。ある程度のプログラミング経験があり、Scala で何ができるか概要を知りたい人向けです。 オブジェクト指向プログラミングの基礎知識(とくに Java での)を前提としています。 目次     次ページ この文書はScala言語とそのコンパイラへの手っとり早い入門です。ある程度プログラミングの経験があり、Scalaでなにができるのか概要を知りたい人向けです。オブジェクト指向プログラミングの基礎知識(とくにJavaでの)を想定しています。 -- いいまわしの工夫 (2008-12-09 10 22 41) 素早く入門>手早く紹介 -- ktr (2009-04-06 12 24 00) qqqqqqqqqqqqqqq...
  • Example4.3
    d#co(){ 4.3 Conditional Expressions Scala s if-else lets one choose between two alternatives. Its syntax is like Java s if-else. But where Java s if-else can be used only as an alternative of statements, Scala allows the same syntax to choose between two expressions. That s why Scala s if-else serves also as a substitute for Java s conditional expression ... ? ... .... } 4.3 条件式 S...
  • Spec2.8Chap7a
    第 7 章 暗黙のパラメータとビュー (Implicit Parameters and Views) 7.1 implicit 修飾子 (The Implicit Modifier) 構文 LocalModifier = implicit ParamClauses = {ParamClause} [nl] ( implicit Params ) Template members and parameters labeled with an implicit modifier can be passed to implicit parameters (§7.2) and can be used as implicit conversions called views (§7.3). The ...
  • sid-special-a
    Scala 2.8 における型専用化 (Type Specialization in Scala 2.8) Iulian Dragos May 6, 2010 英語PDF 1 はじめに Scala コンパイラは型消去を使って、無視できない程のパフォーマンスコストを引き起こす、パラメータを介する多相性(ジェネリックス)を避けます。基本的に型パラメータは消去され、その上限境界で置き換えられ、デフォルトの Object になります。 その結果、プリミティブ型を含むコードは、適切なボクシングとアンボクシング操作を加えて、オブジェクト上で機能するようになります。 ボクシングされたプリミティブ値を操作するプログラムは、手書きで専用化したコードと比べて 10 倍スローダウンするかもしれません。 これは次に、プログラマーがジェネリックなコレクションを避けて...
  • Tutoarial_4
    トップ チュートリアル和訳 4 Everything is an object 4 全てはオブジェクト Scala は純粋なオブジェクト指向ですが、それは数や関数も含めて全てがオブジェクトであるという意味においてです。この点において Java とは異なります。というのは Java ではプリミティブ型 (例えば boolean や int) と参照型とを区別しており、また関数を値として扱えないからです。 4.1 数はオブジェクト 数もオブジェクトなのでメソッドを持ちます。実際、下記のような式 1 + 2 * 3 / x はメソッド呼び出しだけから成り立っています。それは前節で見たように下記の式と等価だからです。 (1).+(((2).*(3))./(x)) これは、+, * なども Scala では有効な識別子だ、ということも意味してい...
  • Spec2.8Chap0a
    序文 Scala はオブジェクト指向と関数型プログラミングを融合した Java に似たプログラミング言語です。 すべての値がオブジェクトであるという点で、 純粋なオブジェクト指向言語です。 クラスによってオブジェクトの型と振る舞いを記述します。 クラスはミックスイン合成を使って構築できます。 Scala は、 2つのそれほど純粋ではないが主流のオブジェクト指向言語 - Java、C# とシームレスに動作するよう設計されています。 すべての関数が値であるという意味で、Scala は関数型言語です。 関数定義のネストと高階関数は当然サポートされています。 Scala はパターン・マッチングの汎用的な概念もサポートし、 多くの関数型言語で使われる代数型をモデル化できます。 Scala は Java (.NET でも Scala の代替実装が動作します) とシームレスに相互...
  • Example5.1
    5.1 無名関数 (Anonymous Functions) 関数をパラメータとすることで、多くの小さな関数が作られます。前の例では id, square, powerOfTwo をそれぞれ別個の関数として定義し、sum に引数として渡せました。 引数用の小さな関数のために名前付きの関数定義を使う代わりに、それらを無名関数として短く書けます。 無名関数 は関数に評価される式で、関数に名前を付けずに定義できます。例として、2乗する無名関数を考えます。 (x Int) = x * x 矢印 = の前の部分は関数のパラメータで、 = に続く部分が本体です。たとえば、2つの引数を掛け合わせる無名関数は次のようになります。 (x Int, y Int) = x * y 無名関数により名前付きの外部関数を使わずに、先ほどの最初...
  • Spec2.8Chap5a
    第 5 章 クラスとオブジェクト 構文 TmplDef = [ case ] class ClassDef | [ case ] object ObjectDef | trait TraitDef Classes (§5.3) and objects (§5.4) are both defined in terms of templates . クラス(§5.3)とオブジェクト (§5.4) は共にテンプレートの言葉で定義されています。 5.1 テンプレート (Templates) 構文 ClassTemplate = [EarlyDefs] ClassParents [TemplateBody] ...
  • sid-swing-a
    scala.swing パッケージ The scala.swing package Ingo Maier November 1, 2009 英語PDF 1 紹介 (Introduction) scala.swing パッケージは Java Swing クラスの周りに、薄いラッパーのコレクションを提供します。 我々の目標は、Scala 中で自然に使えると同時に、既存の Swing プログラミング経験のある Java プログラマーも気にいる、Java Swing に十分近いライブラリを配布することです。 このドキュメントは Scala における Swing プログラミングの簡単な紹介であり、scala.swing 中の利用可能なクラスを概観し、そのデザイン原則を示します。最後に、ライブラリ拡張者が追加ラッパーを書くときに従うべきガイドライ...
  • sid-annot-a
    Scala アノテーション (Internals of Scala Annotations) Lukas Rytz 2010 年 1 月 27 日 英語PDF 目次 1 はじめに (Introduction) 2 生成定義上のアノテーション (Annotations on synthetics) 2.1 フィールド、ゲッターとセッター (Fields, Getters and Setters) 2.2 オブジェクト (Objects) 2.3 トレイト (Traits) 2.3.1 例 (Example) 3 内部表現 (Internal Representation) 3.1 型チェックの前 (Before Type-Checking) 3.2 型チェックの後 (After Type-Checking) 4 アノテーション探訪...
  • ExampleChap3
    第 3 章 アクターとメッセージによるプログラミング この章では、ある応用分野の例を見てゆきます。この分野は Scala がとてもよく似合っています。電子オークションサービスを実装する仕事を考えてみて下さい。Erlang 風のアクタープロセスモデルを使ってオークション参加者の実装をしましょう。アクターとはメッセージを受信するオブジェクトです。各アクターはメッセージ受信用の「メールボックス」を持ち、それはキューとして表現されます。メールボックス中のメッセージを順番に処理することも、特定のパターンにマッチするメッセージを検索することもできます。 取引される商品ごとに一つの競売人アクターがあり、そのアクターが、商品についての情報公開、クライアントからの申し込み受付け、取引終了時の売り手および落札者への通知します。ここでは簡単な実装の概要を示します。 最初のステップとし...
  • ExampleChap6
    第 6 章 クラスとオブジェクト Scala には組み込みの有理数型はありませんが、クラスを使って簡単に定義できます。次が実装例です。 class Rational(n Int, d Int) { private def gcd(x Int, y Int) Int = { if (x == 0) y else if (x 0) gcd(-x, y) else if (y 0) -gcd(x, -y) else gcd(y % x, x) } private val g = gcd(n, d) val numer Int = n/g val denom Int = d/g def +(that Rational) = new Rational(numer * that...
  • Example5.2
    5.2 カリー化 (Curring) 和を求める関数の最後の設計はすでにかなり簡潔です。しかし更に可能です。a と b がすべての関数でパラメータまたは引数として現れる一方で、興味深い組み合わせを成していないようです。それらを除去できるでしょうか。 sum を書き直し、境界 a と b をパラメータにしないようにしましょう。 def sum(f Int = Int) (Int, Int) = Int = { def sumF(a Int, b Int) Int = if (a b) 0 else f(a) + sumF(a + 1, b) sumF } この設計では、sum は他の関数、すなわち特別な和を求める関数 sumF を返す関数です。後者の関数がすべての仕事をします。境界 a と b をパラメータとしてとり...
  • 28-chainedpkg-a
    チェインされたパッケージ節 (Chained Package Clauses) Martin_Odersky 2010 年 9 月 7 日 もしあなたが既にいくつかの大規模な Scala 2.8 プログラムを見たことがあるなら、ソースファイルが時々、次のような複数のパッケージ節の列から始まるのを見て当惑したかもしれません。: package org.myproject package tests ... この意味は何でしょうか? 実はこれは、次のような 2 段にネストしたパッケージ節を書くこととまったく同じです。: package org.myproject { package tests { ... } } ネストしたパッケージ節は全く正しいのですが、それほど頻繁には Scala で使われ...
  • リンク集
    本家 多忙な Java 開発者のための Scala ガイド Scala開眼 ひしだま's ホームページ( コンピューター関連 ・ 作った時などの技術メモ ・ Scala ttp //www.ne.jp/asahi/hishidama/home/tech/scala/ ) Scala 2.8 コレクション API ( ttp //eed3si9n.github.com/scala-collections-doc-ja/collections_0.html ) Scala 2.8 アクター API ( ttp //eed3si9n.github.com/scala-actors-doc-ja ) Scala コレクションのアーキテクチャ ( ttp //eed3si9n.github.com/scala-collections-impl-doc-ja ) ほ...
  • Tutorial_3
    トップ チュートリアル和訳 3 Interaction with Java 3 Javaとの連携 Scala の長所の一つは Java コードとの連携が非常に簡単だということです。java.lang パッケージの全てのクラスはデフォルトでインポートされます。その他は明示的にインポートする必要があります。 それを示す例をお見せしましょう。現在時刻を取得して特定の国、例えばフランス*1で使われる表記方法を適用したいとしましょう。 Java のクラスライブラリには Date と DateFormat のような強力なユーティリティクラスがあります。Scala は Java とシームレスに連動するので、Scala のクラスライブラリに同様なクラスを実装する必要はありません。対応する Java パッケージのクラスをそのままインポートできます。 impor...
  • Spec2.8Chap5c2
    5.3 クラス定義 (Class Definitions) 構文 TmplDef = class ClassDef ClassDef = id [TypeParamClause] {Annotation} [AccessModifier] ClassParamClauses ClassTemplateOpt ClassParamClauses = {ClassParamClause} [[nl] ( implicit ClassParams ) ] ClassParamClause = [nl] ( [ClassParams] ) ClassParams ...
  • Spec2.8Chap5c
    5.3 クラス定義 (Class Definitions) 構文 TmplDef = class ClassDef ClassDef = id [TypeParamClause] {Annotation} [AccessModifier] ClassParamClauses ClassTemplateOpt ClassParamClauses = {ClassParamClause} [[nl] ( implicit ClassParams ) ] ClassParamClause = [nl] ( [ClassParams] ) ...
  • @wiki全体から「TourOfScala0」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索

ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。