Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
Last active December 31, 2015 03:09
Show Gist options
  • Save xuwei-k/7926027 to your computer and use it in GitHub Desktop.
Save xuwei-k/7926027 to your computer and use it in GitHub Desktop.

464ページ

また、Javaでは==や!=で比較できるのは基本型に限られ、オブジェクトの比較は原則としてequalsメソッドを使いました。Scalaでもこれはほぼ同じですが、テキスト(String)も==や!=で比較することができます。

String だけ特別な扱いのような誤解をあたえる?

469、467ページ

Spec2はSpecs2のtypo

463ページ

'シンボル = 値;

"= 値;" の部分いらない?コピペミス?

468ページ

変数 = new Array[形名](要素数)

形名は型名のtypo

497ページ

インスタンス作成時にこれらの処理が実行され、テストが行われていたのです インスタンス作成しただけではテスト行われない。

Scalaの「基本コンストラクタ」というものです。newするとクラス内に直接書かれた基本コンストラクタのコードが実行されます "基本コンストラクタ"というよりは、Javaのインスタンスイニシャライザと言ったほうがいいかもしれない?自分もちょっと自信がないので、誰か仕様書とかちゃんと調べて・・・

473ページ

ただし、newでインスタンスを作成する際には、引数がないからといって()を省略することはできません そんなことはないはず。

313ページ

routesで対応しているhttpのメソッド一覧で、PATCH が抜けてる?

https://github.com/playframework/playframework/blob/2.2.1/framework/src/routes-compiler/src/main/scala/play/router/RoutesCompiler.scala#L149

@kmizu
Copy link

kmizu commented Dec 26, 2013

「基本コンストラクタ」はScala Language Specificationの「primary constructor」の訳語でしょうし、それで良いのでは?Javaでそれに近いものはインスタンスイニシャライザかと思いますが。

@xuwei-k
Copy link
Author

xuwei-k commented Dec 26, 2013

@kmizu いや、たしか説明の文脈としてはspecs2での

class Hoge extends Specification{

  "foo" should {
    "bar" in {

    }
  }

}

shouldなどのコードを指して基本コンストラクタと言っていたのです。
"基本コンストラクタ"といったら、あくまでクラス名から中括弧の間の部分
class Foo/* この部分 */ {
だと思っていたんですが、ボディーに書いた部分も、メソッドの外なら全部"基本コンストラクタ"って言っていいんですかね?
(もしそうだとしたら、それらを区別する場合、それぞれなんと呼べばいいのか?)

あと、どちらにしろspecs2のshouldは名前渡しだったりして

https://github.com/etorreborre/specs2/blob/SPECS2-2.3.6/core/src/main/scala/org/specs2/mutable/FragmentsBuilder.scala#L48

newするとクラス内に直接書かれた基本コンストラクタのコードが実行されます
という記述自体は、完全に間違いでもないのだけど、specs2のshouldinの仕組みや正しい実行順を真面目に説明しようとすると、かなり面倒で誤解を招きやすいというか。

(もちろん、しつこくなるしあの本では全部詳細に説明するべきではないが)
正しくは
「classをnewするとshouldinの引数のブロックがどこかに渡されて、それらはnewした時点では評価されずにどこかに保持され、なんらかのメソッドを後から呼ぶことによって、実行される」
という感じのはず。あと更にDelayedInitも関係する場合あるし・・・

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment