会社のブログログイン登録スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。1,177件0swift初心者です。クラスの継承をしようとするとタイトルのように怒られますloadSCVクラスからnumberプロパティとdata配列をstep1クラスで使用したいのですがnumberは使用することができましたが、data配列は宣言エラーが出て使用できないですご指摘お願いします。(投稿順)0クラスの基本形クラス定義の基本形を示します。{}}クラスの基本構成物は、ほかにイニシアライザ、定数、クラスメソッド、タイププロパティ、タイプメソッドなどありますが、必要十分条件の必要条件は、プロパティと(インスタンス)メソッドです。ご提示のコード中のクラスloadCSVとstep1いずれにも、プロパティがなく、それでコンパイルエラーになりませんが、クラスとは何か、何を目的にしているのかという、そもそも論を考えると、何も値を保持しないクラスは、蜜や花粉を巣に持ち帰らないミツバチと同じといえます。Variableと呼ぶことがあります。オブジェクト指向言語の多くで、インスタンス変数という用語が使われているので、そちらの方が通りがいいのですが、厳密には、プロパティとインスタンス変数は同じではないので、プロパティを使います。変数のスコープ(有効範囲)変数には有効範囲があり、有効範囲をスコープと呼びます。基本として、ブロック({から}で囲まれた、コードの集まり)がすなわちスコープになります。変数のスコープは、変数の寿命といってもよくて、プログラムの実行がブロックから抜けると、ブロック内の変数は解放されます。200"Playgroundで上のコードを書いて、実行してみてください。ブロックは、関数(メソッド)、条件文、繰り返し文などで使われますが、独立したブロックを作ることもでき、その場合、Swiftでは、doを頭につけます。関数hoge内で、変数aを重複して宣言していますが、コンパイルエラーにも、実行エラーにもなりません。{}内の変数aの有効範囲がブロック内に限定されるからです。'b'}hoge()ブロックの外で、変数bにアクセスしようとすると、「変数が定義されてない」とエラーになります。dataの行でエラーになる理由がお分かりになりましたでしょうか?変数をクラス内のどこでも使えるようにするには、プロパティとして宣言することです。プロパティとして宣言するということは、同時に、変数の寿命が、インスタンスの寿命と同じになることも意味します。(インスタンス外部からアクセスできる点もあり、大事ですが、ここではその説明は割愛します)以下、ご提示のコードに改良を加えたコードを載せます。メソッドloadCSV()の実装を、イニシアライザに移動しています。この変更が、プログラム全体の設計の中で、妥当なものかは、私には判断できません。それと、配列dataの要素の型を、StringからDoubleに変更しています。これもご提示のコードの範囲だけで判断すれば、要素を文字列でなく数値にすべきだからです。プログラム全体の設計から判断したものではありません。UIKitがFoundationをインポートしているので、不要。型名(クラス名含む)は、大文字で始めるという規則があります。プロパティとして、dataを宣言。numberを残して、はみ出した分は切り捨てる。「エラーと出力して終わり」ではさすがにまずいでしょう。型名(クラス名)を大文字で始める。mapメソッドを使った場合。Step1()obj.step1()print(obj.data)Range(範囲)の書き方の誤解があるので、質問と直接関係ありませんが、説明しておきます。Rangeには、CountableRangeとCountableClosedRangeがあります。rangeのエラーになります。中の変数であって、親クラスのプロパティではありません。そのため、親クラスを継承しても参照することが出来ないのです。|この質問に回答するには、ログインする必要があります。求めていた回答ではありませんか?swift3のタグが付いた他の質問を参照する。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。従って情報を開示できることに同意したことになります。選択した項目のみ受け入れる。