2015-09-29 29 views
0

我想扩展数组来返回一个子数组。 行令b = arr.objectsAtIndexes([1,3,5])产生类型的误差“值 '[INT]' 没有成员 'objectsAtIndexes' playground screenshotSwift:扩展数组,值类型_没有成员_

import Foundation 

var arr = [Int](6..<19) 
let b = arr.objectsAtIndexes([1,3,5]) 
b = b.append(1) 

extension Array { 
    func objectsAtIndexes(indexes: [Int]) -> [Element] { 
     var returnArray = [Element]() 
     for i in indexes { 
      returnArray.append(self[i]) 
     } 
     return returnArray 
    } 
} 

回答

0

只需使用下面的该扩展扩展声明是这样的:

import Foundation 

extension Array { 
    func objectsAtIndexes(indexes: [Int]) -> [Element] { 
     var returnArray = [Element]() 
     for i in indexes { 
      returnArray.append(self[i]) 
     } 
     return returnArray 
    } 
} 

var arr = [Int](6..<19) 
var b = arr.objectsAtIndexes([1,3,5]) 
b = b.append(1) 

而替换该行:

b = b.append(1) 

这一行:

b.append(1) 

而你的结果将是:

enter image description here

0

定义extension之后,你应该打电话给你的方法。勾选此Extension reference

.append不返回任何值,所以不要为它分配

extension Array { 
    func objectsAtIndexes(indexes: [Int]) -> [Element] { 
     var returnArray = [Element]() 
     for i in indexes { 
      returnArray.append(self[i]) 
     } 
     return returnArray 
    } 
} 

var arr = [Int](6..<19) 
var b = arr.objectsAtIndexes([1,3,5]) 
// Do not assign to b 
b.append(1) 
相关问题