2014-12-19 57 views
1

我想寫一個函數來追加到一個值的數組的東西,然後打印出來,但它會返回__lldb_expr_444.taste時,我打電話給我的功能打印出來後? 繼承人我的代碼:功能與追加不工作在swift

// Playground - noun: a place where people can play 

import UIKit 

struct taste { 
var TheName = "blankName" 

var TheDesc = "blankDesc" 
} 




var data = [taste]() 


func addFruit(name:String,desc:String) { 
data.append(taste(TheName: name as String, TheDesc: desc as String)) 


} 

addFruit("cherry", "sweet") 

println(data) 

我做錯了什麼?

+0

你不應該將你的變量命名爲大寫字母 –

回答

0

您正在嘗試訪問函數中的數據,但它已從函數外部聲明。

解決此問題的一種方法是創建一個類,將數組作爲類變量,將addFruit作爲類的函數創建。

否則,您可以傳遞數組作爲addFruit函數的參數,以便能夠在函數內對其進行修改。爲了打印你的數組,你可以迭代它。

var data:[taste] 

func addFruit(name:String, desc:String, inout fruitArray:taste) { 
    fruitArray.append(taste(TheName: name as String, TheDesc: desc as String)) 
} 

addFruit("cherry", "sweet", &data) 

for item in data{ 
    println(item) 
} 
1

您需要採用Printable協議並實現返回文本結構表示的描述計算變量。

struct taste: Printable { 

    var TheName = "blankName" 
    var TheDesc = "blankDesc" 

    var description: String { 
    return "TheName: \(TheName); TheDesc: \(TheDesc)" 
    } 
}