前提・実現したいこと
TypeScriptで、複素行列クラスを実装しております。
コンストラクタの実装でvaluesがComplex[]とnumber[]の場合で、instanceofを使って場合分けし、それぞれの場合で処理したいのですが、うまくいきません。
どのように実装すれば良いのでしょうか。
該当のソースコード
TypeScript
1class Matrix{ 2 m:number; 3 n:number; 4 values:Complex[]; 5 constructor(m:number, n:number); 6 constructor(m:number, n:number, values?:number[]|Complex[]){ 7 this.m=m; 8 this.n=n; 9 if(values == undefined){ 10 this.values=Complex.zeros(m*n); 11 }else if(Array.isArray(values)){ 12 if(values instanceof Complex[]){//ここで困ってます。 13 this.values=values; 14 }else{ 15 this.values=Complex.zeros(m*n); 16 for(let i=0;i<values.length;i++){ 17 this.values[i]=this.values[i].add(values[i]); 18 } 19 } 20 } 21 } 22}
試したこと
values instanceof Complex[]では、そもそも構文エラーで、
values[0] instanceof Complexでは、valuesがComplex[]であることが確定しておらず、this.values=valuesで代入できない。
typeof(values) === "Complex[]"もダメでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/04 08:25