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

検索 :
  • CodeOfScalaByExample
    Scala By Example のコード Chapter 2 Chapter 2 の Quicksort
  • 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...
  • 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...
  • 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) { | ...
  • 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...
  • Example8.6
    8.6 関数 (Functions) 関数が第一級クラス値であるという点で Scala は関数型言語です。Scala はすべての値がオブジェクトであるという点でオブジェクト指向言語です。したがって Scala では関数はオブジェクトです。たとえば、型 String から型 Int への関数は、トレイト Function1[String, Int] のインスタンスとして表現されます。Function1 トレイトは次のように定義されます。 package scala trait Function1[-A, +B] { def apply(x A) B } Function1 の他にも、異なるすべてのアリティ(項数)の関数に対して,定義があります (現在は、適正値までしか実装されていません) 。つまり、関数のパラメータの数ごとに定義があるということで...
  • 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]によって記述します。 クラス...
  • Example4.1
    4.1 式と簡単な関数 Scala システムには、素敵な計算機と見ることのできるインタプリタが同梱されています。ユーザーは式をタイプすることで計算機と交信できます。計算機は評価した結果とその型を返します。たとえば scala 87 + 145 unnamed0 Int = 232 scala 5 + 2 * 3 unnamed1 Int = 11 scala "hello" + " world!" unnamed2 java.lang.String = hello world! 部分式に名前を付け、以後は式の代わりにその名前を使うこともできます。 scala def scale = 5 scale Int scala 7 * scale unnamed3 Int = 35 ...
  • TourOfScala3
    Scala ひと巡り sealed クラス (Sealed Classes) 原ページ sealed クラスは、継承するテンプレートを継承されるクラスと同じソースファイル中で定義する場合を除き、直接には継承できません。しかし、sealed クラスのサブクラスはどこででも継承できます。 sealed クラスは sealed 修飾子を使って定義できます。 もしパターンマッチのセレクタが sealed クラスのインスタンスなら、パターンマッチングのコンパイル時に、与えられたパターンセットが網羅的ではないと診断する警告が出ます。すなわち、実行時に MatchError [60] が発生する可能性があるということです。 @unchecked アノテーション [47] をマッチ式のセレクタに適用すると、そうでなければ発せられるはずの、非網羅的パターンマッチに...
  • TourOfScala1
    Scala ひと巡り 抽象型 (Abstract Types) 原ページ Scala では、クラスは値(コンストラクタ・パラメータ)と(もしクラスがジェネリック [16]なら)型でパラメータ化されます。単に規則に従って、オブジェクトメンバーとして値を持てるというばかりではありません; 値と同様に、型はオブジェクトのメンバーです。さらに、メンバーの両形式とも、具象あるいは抽象で構いません。 次の例は、クラス Buffer のメンバーとして、延期された値定義と抽象型定義の両方を定義しています。 abstract class Buffer { type T val element T } 抽象型はその正体が正確には知られていない型です。上記の例で、我々は、クラス Buffer の各オブジェクトが 型メンバー T を持つことだけを知ってい...
  • Example5.5
    5.5 ここまでの構文 第 4 章と第 5 章では、プリミティブなデータと関数の、式と型を表現する Scalaの構文を扱いました。下記に、それらの文脈自由文法を拡張 Backus-Naur 記法で与えます。 | は選択を、[...] はオプション (0あるいは1回の出現)、{...} は繰り返し (0回以上の出現)を表します。 文字 Scala プログラムは (Unicode) 文字の列です。次の文字セットを区別します。 空白文字。たとえば 、タブ、改行文字 文字。 a - z 、 A - Z 数字。 0 - 9 区切り文字。 . , ; ( ) { } [ ] \ " 演算子文字。たとえば # + 。正確には、上記のどれにも含まれない印刷可能...
  • Example17.1
    17.1 シグナルとモニター (Signals and Monitors) Example 17.1.1  モニター は Scala におけるプロセスの相互排他処理の基本的な手段を提供します。 AnyRef クラスの各インスタンスは、次の1つあるいは複数のメソッドを呼ぶことでモニターとして使えます。 def synchronized[A] (e = A) A def wait() def wait(msec Long) def notify() def notifyAll() 同期メソッドは相互排他的に、つまり同時にはただ1つのスレッドだけが与えられたモニターの同期化引数を実行できる方式で、その引数である計算 e を実行します。 スレッドはシグナルをウェイトすることで、モニター内でサスペンドできます。 wait...
  • 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 の命令型(ミュータブル 更新可能な)スタックをモデル化します。型パラメータの使用...
  • 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...
  • Example7.2
    7.2 パターンマッチング (Pattern Matching) パターンマッチングは C や Java の switch 文をクラス階層に一般化したものです。switch 文の代わりに標準メソッド match があり、それは Scala のルートクラス Any で定義されていて、したがって全てのオブジェクトで使用できます。match メソッドは引数として複数のケースを取ります。たとえば、次はパターンマッチングを用いた eval の実装です。 def eval(e Expr) Int = e match { case Number(n) = n case Sum(l, r) = eval(l) + eval(r) } この例では,2つのケースがあります。各ケースはパターンと式を関連付けます。パターンはセレクタ値 e に対してマッチされます。この...
  • 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 はオブジェクト指向言語です すべての値がオブジェクトである [...
  • 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...
  • Example11.3
    11.3 高度な例 離散イベントシミュレーション(Extended Example Discrete Event Simulation) 代入と高階関数がどのように興味深い形で結びつくか、例をとおして考えます。ここでは、デジタル回路シミュレータを構築します。 この例は Abelson と Sussman の本[ASS96]から借りました。彼らの基本的な (Scheme の) コードを、継承でコードを再利用できるオブジェクト指向によって拡張しています。この例は、一般的な離散イベントのシミュレーションプログラムが、どのように構造化され構築されるかも示します。 デジタル回路を記述する小さな言語から始めます。デジタル回路は 結線 と function box から構築されます。結線は信号を運び、function box は信号を変換します。信号は ture と ...
  • 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...
  • ExampleChap1
    第 1 章 はじめに Scala はオブジェクト指向と関数型のプログラミングをスムーズに統合します。一般的なプログラミングパターンを簡潔・エレガント・型安全に表現するようにデザインされています。Scala は革新的な構文をいくつか導入します。たとえば、 抽象型(abstract type)とミックスイン合成(mixin composition)は、オブジェクトとモジュール・システムの概念を統合します。 クラス階層を超えたパターン・マッチングは、関数型とオブジェクト指向のデータ・アクセスを統合します。その結果、XML 木の処理が大幅に単純化されます。 柔軟な構文と型システムにより、先進的ライブラリと新しいドメイン特化言語の構築が可能です。 同時に、Scala は Java と互換性があります。Java のライブラリとフレームワークは、接着用コ...
  • Example8.5
    8.5 タプル (Tuples) 関数から1つ以上の結果を返す必要がたまに生じます。たとえば、与えられた2つの整数引数の整数商と余りを返す関数 divmod を考えましょう。もちろん、divmod の2つの結果を保持するクラスを次のようにも定義できます。 case class TwoInts(first Int, second Int) def divmod(x Int, y Int) TwoInts = new TwoInts(x / y, x % y) しかし、結果型のペア一つ一つに対し、新しいクラスを定義しなくてはならないのでは、あまりに面倒です。Scala ではその代わりに、次のように定義されたジェネリッククラス Tuple2 を使えます。 package scala case class Tuple2[A, B](_1 A, _2...
  • 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.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...
  • トップページ
    プログラミング言語 Scala このWikiの目的は? Scalaのマニュアルの日本語訳を作成する。首尾よく日本語訳が完成したら、www.scala-lang.orgに置いてもらうように頼むつもり。-- 完成したのを連絡したのだけど、全然本家サイトに置いて貰えない...。 →置いてあるようです。Translations of the Scala Manuals ScalaのTipsなどの情報をまとめる。 使い方 普通に自由にWikiとして自由に編集して下さい。spam投稿で荒れたりするまでは、自由に編集出来る様にしておきます。 ご意見や不具合などありましたら管理人(tmiya@bu.iij4u.or.jp)までご連絡下さい。 もう何冊も日本語でのScala解説本が出たので管理人は和訳プロジェクトを放置状態です。このサイトの翻訳文を管理者がPDF化の作業は実施しませんのでご了承下さい。 ...
  • Example5.3
    5.3 例 関数の不動点探索 数 x は次の条件を満たす時に、関数 f の 不動点 と呼ばれます。 f(x) = x . いくつかの関数 f では、初期推定値から始めて、値が変化しなくなる (あるいは変化が小さな許容量以下になる) まで f を繰り返し適用することで不動点を求めることができます。それは、数列 x, f(x), f(f(x)), f(f(f(x))), ... が、f の不動点に収束すれば可能です。このアイデアを取り入れたのが次の「不動点を求める関数」です。 val tolerance = 0.0001 def isCloseEnough(x Double, y Double) = abs((x - y) / x) tolerance def fixedPoint(f Double = Double)(...
  • Example4.5
    4.5 ネストした関数 関数型プログラミングスタイルでは、小さなヘルパー関数をたくさん作ることを推奨しています。先の例では、sqrt の実装はヘルパー関数 sqrtIter、improve、isGoodEnough を使っています。これらの関数の名前は sqrt の実装にだけ関係します。ふつう我々は、sqrt のユーザーがこれらの関数に直接アクセスすることを望みません。 そうすることを (そして名前空間の汚染を避けるのを)、ヘルパー関数を呼び出す関数自身の中へ入れることで強制できます。 def sqrt(x Double) = { def sqrtIter(guess Double, x Double) Double = if (isGoodEnough(guess, x)) guess else sqrtIter(improve(g...
  • Example17.5
    17.5 セマフォ プロセス同期の一般的なメカニズムは ロック (あるいは セマフォ ) です。ロックは2つのアトミックなアクションを提供します。すなわち、 獲得 と 解放 です。次は Scala におけるロックの実装です。 package scala.concurrent class Lock { var available = true def acquire = synchronized { while (!available) wait() available = false } def release = synchronized { available = true notify() } } 前ページ 17 章 目次 次ページ ...
  • Spec2.8Chap3a
    第 3 章 型 (Types) 構文 Type = FunctionArgTypes = Type | InfixType [ExistentialClause] FunctionArgTypes = InfixType | ( [ ParamType { , ParamType } ] ) ExistentialClause = forSome { ExistentialDcl {semi ExistentialDcl} } ExistentialDcl = type TypeDcl | val ValDcl Infi...
  • Example17.9
    17.9 ワーカー Scala における 計算サーバー の実装例を見てみましょう。サーバーは future メソッドを実装し、与えられた式をその呼び出し者と並列に評価します。 17.3節の実装とは異なり、サーバーはスレッドの事前定義された数字だけを持って future を計算します。サーバーの一つのあり得る実装では、別々のプロセッサ上で各スレッドを走らせることができ、シングルプロセッサ上で複数のスレッドを切り替える際のコンテキストスイッチングに伴うオーバーヘッドを回避できます。 import scala.concurrent._, scala.concurrent.ops._ class ComputeServer(n Int) { private abstract class Job { type T def task T...
  • Example9.2
    9.2 リストクラスの定義Ⅰ 一階メソッド リストは Scala では組み込み型ではありません。抽象クラス List として定義され、2つのサブクラス と Nil があります。以降では、クラス List のツアーに出かけます。 package scala abstract class List[+A] { List は抽象クラスであり、空の List コンストラクタを呼び出して (たとえば new List )、要素を定義することはできません。クラスには型パラメータ a があります。このパラメータについて共変、つまり S T であるような型 S と T について、List[S] List[T] です。クラスはパッケージ scala にあります。このパッケージは Scala の最も重要で標準的なクラスを含んでいます。List は多くのメソッドを定...
  • Example8.4
    8.4 最下層の型 (Least Types) Scala では、オブジェクトを型でパラメータ化することはできません。そういう訳で、たとえ任意の型の空スタックを表すただ一つの値で充分だったとしても、最初にジェネリッククラス EmptyStack[A] を定義しました。しかし、共変的スタックについては、次のイディオムを使えます。 object EmptyStack extends Stack[Nothing] { ... } ボトム型 Nothing は値を持ちません。したがって型 Stack[Nothing] は、EmptyStack が要素を含まないことを表現します。さらに、Nothing は他のすべての型のサブタイプです。ですから、共変的スタックではどんな型 T に対しても、Stack[Nothing] は Stack[T] のサブタイプです。これによってユ...
  • Example11.1
    11.1 状態を持つオブジェクト (Stateful Object) 我々は世界をオブジェクトの集合としてとらえ、オブジェクトの中には時間と共に変化する状態を持つものもあります。通常、状態は計算の過程で変化しうる変数の集合と結びついています。プログラミング言語の特定の構文に触れずに、状態を抽象化して言うと、「もしオブジェクトの振る舞いがその履歴に影響されるなら、オブジェクトは 状態を持つ ( ステートフル である)。」となります。 たとえば、銀行口座オブジェクトは状態を持ちます。なぜなら「100スイスフラン引き出せるか?」は口座の存続期間、異なる答を持ちうるからです。 Scala ではすべてのミュータブルな状態は、結局のところ、変数から作られます。変数定義は値定義と同じように書きますが、val の代わりに var で始まります。たとえば、次の2つの定義は2つの...
  • Example9.1
    9.1 リストの使用 (Using Lists) リスト型  配列と同じくリストは 等質 です。つまり、リストの要素はすべて同じ型です。要素型 T のリストの型は List[T] と書きます(Java の T[] は配列です)。 val fruit List[String] = List("apples", "oranges", "pears") val nums List[Int] = List(1, 2, 3, 4) val diag3 List[List[Int]] = List(List(1, 0, 0), List(0, 1, 0), List(0, 0, 1)) val empty List[Int] = List() リストのコンストラクタ  すべてのリストは2つの...
  • Example7.1
    7.1 ケースクラスとケースオブジェクト ケースクラス と ケースオブジェクト は普通のクラスやオブジェクトのように定義しますが、定義に修飾子 case が手前に付くことだけが違います。たとえば定義 abstract class Expr case class Number(n Int) extends Expr case class Sum(e1 Expr, e2 Expr) extends Expr は、Number と Sum をケースクラスとして導入します。クラスやオブジェクト定義の前の case 修飾子には、次のような効果があります。 1. ケースクラスは暗黙のうちにコンストラクタ関数を伴い、それはクラスと同じ名前です。この例の場合、2つの関数 def Number(n Int) = new Number(n) def ...
  • Example8.2
    8.2 変位指定アノテーション (Variance Annotations) 型パラメータとサブタイプ化の組み合わせは興味深い問題を引き起こします。たとえば、Stack[String] は Stack[AnyRef] のサブタイプであるべきでしょうか? 直感的には OK のように思われます。String のスタックは AnyRef のスタックの特別な場合だからです。より一般的に言うと、もし T が型 S のサブタイプなら、Stack[T] は Stack[S] のサブタイプであるべきです。この性質は 共変 (co-variant)サブタイプ化と呼ばれます。 Scala では、ジェネリック型はデフォルトでは非変(non-variant)サブタイプ化です。それは、前に定義した Stack については、異なる要素型のスタックは決してサブタイプ関係にないということです。しかし、ク...
  • Example8.1
    8.1 型パラメータの境界 クラスをジェネリックにする方法を知った今では、前に書いたクラスの中には一般化した方が自然なものがあります。たとえばクラス IntSet は、任意の要素型を持てるように一般化できます。やってみましょう。ジェネリックな集合の抽象クラスは簡単に書けます。 abstract class Set[A] { def incl(x A) Set[A] def contains(x A) Boolean } しかしもし二分木として実装し続けたいなら、問題に直面します。メソッド contains と incl はどちらも、要素をメソッド と を使って比較します。IntSet については、これは OK です。なぜなら Int はそれら2つのメソッドを持っているからです。しかし任意の型パラメータ a に対しては、それは保証でき...
  • 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 ...
  • Example9.4
    9.4 リストクラスの定義Ⅱ 高階メソッド ここまでに見た例が示すことは、リストに対する関数はしばしば似た構造をしているということです。リストに対する計算パターンをいくつか見ることができます。たとえば、 ある方法で全ての要素を変換する 条件を満たす全ての要素を取り出す。 ある演算子を用いて全ての要素を結合する 関数型プログラミング言語では高階関数を使うことで、パターンを実装する汎用的な関数を書けます。よく使われる高階関数について議論しますが、それらはクラス List のメソッドとして実装されています。 リストのマッピング  リストの各要素を変換して結果のリストを得ることは、よくある操作です。たとえば、リストの各要素を与えられた数だけ倍するのは、 def scaleList(xs List[Double], facto...
  • 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 をパラメータとしてとり...
  • メニュー
    メニュー トップページ チュートリアル (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 更新履歴 取得中です。
  • Example4.4
    4.4 例 ニュートン法による平方根計算 ここまでに紹介した構文を、もう少し興味深いプログラムを組み立てて、示しましょう。課題は x の平方根を計算する関数 def sqrt(x Double) Double = ... を書くことです。 平方根を計算する一般的な方法は、近似を繰り返すニュートン法です。まず初期推定値 y (たとえば y=1) から始めます。次いで現在の推定値 y を、y と x/y の平均値を取って繰り返し改良します。次の例では √2 を近似する、推定値 y、商 x/y、その平均が3列に示されています。 1 2/1 = 2 1.5 1.5 2/1.5 = 1.3333 1.4167 1.4167 2/1...
  • 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] ) ...
  • 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 ...
  • 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...
  • Example10.2
    10.2 For 内包表記によるクエリ (Querying with For-Comprehensions) for 内包表記は、データベースのクエリ言語による一般的操作と本質的に同じです。たとえば、データベース books があり、本のリストとして表現されているとしましょう。ただし Book は次のように定義されるものとします。 case class Book(title String, authors List[String]) 次はデータベースの小さなサンプルです。 val books List[Book] = List( Book("Structure and Interpretation of Computer Programs", List("Abelson, Haro...
  • Example5.1
    5.1 無名関数 (Anonymous Functions) 関数をパラメータとすることで、多くの小さな関数が作られます。前の例では id, square, powerOfTwo をそれぞれ別個の関数として定義し、sum に引数として渡せました。 引数用の小さな関数のために名前付きの関数定義を使う代わりに、それらを無名関数として短く書けます。 無名関数 は関数に評価される式で、関数に名前を付けずに定義できます。例として、2乗する無名関数を考えます。 (x Int) = x * x 矢印 = の前の部分は関数のパラメータで、 = に続く部分が本体です。たとえば、2つの引数を掛け合わせる無名関数は次のようになります。 (x Int, y Int) = x * y 無名関数により名前付きの外部関数を使わずに、先ほどの最初...
  • リンク集
    本家 多忙な 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 ) ほ...
  • Example17.3
    17.3 フューチャー フューチャー は、他のクライアントスレッドにおいて並列に計算される値であり、クライアントスレッドによっていつか使用されます。フューチャーは並行プロセスのリソースを有効に利用するために使います。典型的な使い方は次のようです。 import scala.concurrent.ops._ ... val x = future(someLengthyComputation) anotherLengthyComputation val y = f(x()) + g(x()) future メソッドはオブジェクト scala.concurrent.ops において、次のように定義されています。 def future[A](p = A) Unit = A = { val result = new SyncVar[A]...
  • @wiki全体から「CodeOfScalaByExample」で調べる

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

ツールボックス

下から選んでください:

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