ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと

scalaのclass,objectでのコンストラクタを次のように記述すると思いますが

class A {
コンストラクタ処理
フィールド
メソッド
}
このとき、
コンストラクタ処理 と フィールド,メソッド
の境は明確に分けられるのでしょうか??

A 回答 (2件)

あぁ, 「うしろにあるフィールドにアクセスできる」のはあたりまえだと思ってた (苦笑). プログラム言語によってはそうでもなかったなぁ....



前後関係はいろいろ微妙に変なネタがあるから難しい感じがする. ただ, 少なくとも言語仕様において
class A {
コンストラクタ処理
フィールド
メソッド
}
のように書くことを要求しているわけではない (てきとうに混ぜてしまってもかまわない) ので「コンストラクタ処理 と フィールド,メソッドの境」というものは (少なくとも仕様の上では) 存在しません.

強いていうなら
それぞれの文ごとに「これはコンストラクタでの処理だ」とか「こいつはフィールドの定義なんだな」とか「ここでメソッドを定義してるな」とかが決まる
くらいかな.
    • good
    • 0
この回答へのお礼

ありがとうございます.
「コンストラクタ処理 と フィールド,メソッドの境」が (少なくとも仕様の上では) 存在しないことを理解して進んでいきます.

お礼日時:2016/06/30 11:03

考え方によっていろいろあるだろうね. 極端な方向に振れば


そもそも「コンストラクタ処理」だの「フィールド」だの「メソッド」だのと区別するのがおかしい
とも考えられるだろうし.
    • good
    • 0
この回答へのお礼

ありがとうございます.
>そもそも「コンストラクタ処理」だの「フィールド」だの「メソッド」だのと区別するのがおかしいとも考えられるだろうし.
区別できないと不都合になりませんか?
class A {
//コンストラクタ処理
printIn("A")
//フィールド
var b:Int
メソッド
}
上の例だと処理の後に変数宣言があるからフィールドだと思えますが、もし
var b:Int
をコンストラクタ処理の一部だと思うと、フィールドbが使えないことになると思うのですが??
いかがでしょうか

お礼日時:2016/06/24 12:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!