2014-12-19 34 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)" 
    } 
}