2016-06-24 5 views
2

数か月前に動作したコードを確認した後で、このエラーを修正する方法を説明することができますか?表示されるエラーは、「式の種類がコンテキストがなくてもあいまいです」と表示されます。なぜこのタプルは、迅速な文脈がなくてもあいまいですか?

var products = [("Kayak","A boat for one person","Watersports",275.0,10), 
       ("Lifejacket","Protective and fashionable","Watersports",48.95,14), 
       ("Soccer Ball","FIFA-approved size and weight","Soccer",19.5,32), 
       ("Corner Flags","Give your playing field a professional touch","Soccer",34.95,1), 
       ("Stadium","Flat-packed 35,000-seat stadium","Soccer",79500.0,4), 
       ("Improve your brain efficiency by 75%","Chess",16.0,8), 
       ("Unsteady Chair","Secretly give your opponent a disadvantage","Chess",29.95,3), 
       ("Human Chess Board","A fun game for the family","Chess",75.0,2), 
       ("Bling-Bling King","Gold-plated,diamon-studded King","Chess",1200.0,4)] 
+1

"奇妙なエラーメッセージ"の原因を見つける一般的な手順は、問題が解消されるまで行を削除し、問題を切り分けるために行をもう一度追加することです。あなたは簡単にそれを自分で行うことができます... –

+0

組み込み型推論が失敗したとき、私は明示的に型を述べ、エラーが消え去ったかどうかを見ることを好みます。そうでない場合は、そのタイプが実際にあいまいではなく、単に間違っている(または少なくともあなたが思ったものではない)という良い証拠です。 –

+3

コンパイラに親切にしてください。 'var products:[(String、String、String、Double、Int)] = [...'は型を知らせずに大きな初期値を与えないでください。あなたがこれをしていれば、 'エラー:タイプ'(String、String、Double、Int) 'の値を期待される要素タイプ'(String、String、String、Double、Int) 'に変換できず、問題との正確な線。 – vacawama

答えて

4

このライン:

("Improve your brain efficiency by 75%","Chess",16.0,8),

のみ2つの文字列の代わりに、3活動欠けているように見えるの名前を持っています(?)。

0

Do not abuseこのような構造体。あなたは、構造体にこれをリファクタリングする必要があります

struct Product { //fill these names in better 
    let name: String 
    let description: String 
    let category: String 
    let price: Double 
    let x: Int 
} 

var products = [ 
    Product(name: "Kayak", 
     description: "A boat for one person", 
     category: "Watersports", price: 275.0, x: 10), 
    Product(name: "Lifejacket", 
     description: "Protective and fashionable", 
     category: "Watersports", price: 48.95, x: 14), 
    Product(name: "Soccer Ball", 
     description: "FIFA-approved size and weight", 
     category: "Soccer", price: 19.5, x: 32), 
    Product(name: "Corner Flags", 
     description: "Give your playing field a professional touch", 
     category: "Soccer", price: 34.95, x: 1), 
    Product(name: "Stadium", 
     description: "Flat-packed 35,000-seat stadium", 
     category: "Soccer", price: 79500.0, x: 4), 
    Product(name: "YOU FORGOT TO GIVE ME A NAME", 
     description: "Improve your brain efficiency by 75%", 
     category: "Chess", price: 16.0, x: 8), 
    Product(name: "Unsteady Chair", 
     description: "Secretly give your opponent a disadvantage", 
     category: "Chess", price: 29.95, x: 3), 
    Product(name: "Human Chess Board", 
     description: "A fun game for the family", 
     category: "Chess", price: 75.0, x: 2), 
    Product(name: "Bling-Bling King", 
     description: "Gold-plated,diamon-studded King", 
     category: "Chess", price: 1200.0, x: 4) 
] 

これは、すべてのこれらの値が何であるか、それがより明確になり、より自然(あなたがたとえば、むしろproduct.1より、product.nameで名前を取得することができます)それらにアクセスすることができます。

関連する問題