Swift 在另一个文件中调用 public class
Swift calling public class in another file
在Swift编程中。我创建了一个名为 Array3d 的 public class,它位于 Array3d.swift 文件中。我的 ViewController2.swift 使用 Array3d class 和我的 println(dog) 创建了一个名为 dog 的变量。但是我的控制台不显示 dog 数组的值,而是显示 FYP_Table.Array3D 。
我创建了一个名为 dog 的 3D 数组,并向其中插入了一些值。现在我想将它打印到我的调试器输出。但不起作用。
// Array3d.swift
public class Array3D {
var zs:Int, ys:Int, xs:Int
var matrix: [Float]
init(zs: Int, ys:Int, xs:Int) {
self.zs = zs
self.ys = ys
self.xs = xs
matrix = Array(count:zs*ys*xs, repeatedValue:0)
}
subscript(z:Int, y:Int, x:Int) -> Float {
get {
return matrix[ z * ys * xs + y * xs + x ]
}
set {
matrix[ z * ys * xs + y * xs + x ] = newValue
}
}
//ViewController2.swift
class ViewController2: UITableViewController {
var dog = Array3D(zs: 3, ys: 3, xs: 3)
override func viewDidLoad() {
dog[1,0,0] = 1
dog[0,4,0] = 2
dog[0,0,4] = 3
dog[0,4,4] = 4
for z in 0..<3 {
for y in 0..<3 {
for x in 0..<3 {
println(self.dog)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
您的 class 没有 description
,所以它只是打印默认表示。
func description() -> String {
return String(format: "Array3D zs:%d ys:%d xs:%d", self.zs, self.ys, self.zs)
}
正确的方法是实现 Printable
协议(参见 here),它只是一个名为 description
的只读 属性。
var description : String {
return String(format: "Array3D zs:%d ys:%d xs:%d", zs, ys, zs)
}
在Swift编程中。我创建了一个名为 Array3d 的 public class,它位于 Array3d.swift 文件中。我的 ViewController2.swift 使用 Array3d class 和我的 println(dog) 创建了一个名为 dog 的变量。但是我的控制台不显示 dog 数组的值,而是显示 FYP_Table.Array3D 。
我创建了一个名为 dog 的 3D 数组,并向其中插入了一些值。现在我想将它打印到我的调试器输出。但不起作用。
// Array3d.swift
public class Array3D {
var zs:Int, ys:Int, xs:Int
var matrix: [Float]
init(zs: Int, ys:Int, xs:Int) {
self.zs = zs
self.ys = ys
self.xs = xs
matrix = Array(count:zs*ys*xs, repeatedValue:0)
}
subscript(z:Int, y:Int, x:Int) -> Float {
get {
return matrix[ z * ys * xs + y * xs + x ]
}
set {
matrix[ z * ys * xs + y * xs + x ] = newValue
}
}
//ViewController2.swift
class ViewController2: UITableViewController {
var dog = Array3D(zs: 3, ys: 3, xs: 3)
override func viewDidLoad() {
dog[1,0,0] = 1
dog[0,4,0] = 2
dog[0,0,4] = 3
dog[0,4,4] = 4
for z in 0..<3 {
for y in 0..<3 {
for x in 0..<3 {
println(self.dog)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
您的 class 没有 description
,所以它只是打印默认表示。
func description() -> String {
return String(format: "Array3D zs:%d ys:%d xs:%d", self.zs, self.ys, self.zs)
}
正确的方法是实现 Printable
协议(参见 here),它只是一个名为 description
的只读 属性。
var description : String {
return String(format: "Array3D zs:%d ys:%d xs:%d", zs, ys, zs)
}